1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> #include <string.h> int G[101][101]; int degree_o[101]; int degree_i[101]; int n, m; int main() { while(scanf("%d%d",&n,&m) != EOF){ memset(G,0,sizeof(G)); memset(degree_o,0,sizeof(degree_o)); memset(degree_i,0,sizeof(degree_i)); for(int i = 0;i < m; i++){ int a, b; scanf("%d%d",&a,&b); G[a][b] = 1; } for(int i = 1;i <= n; i++)G[i][i] = 1; for(int k = 1;k <= n; k++){ for(int u = 1;u <= n; u++){ for(int v = 1;v <= n; v++){ if(G[u][k]==1 && G[k][v]==1 && u != v){ G[u][v] = 1; } } } } for(int u = 1;u <= n; u++){ for(int v = 1;v <= n; v++){ if(u!=v && G[u][v]){ degree_o[u]++; degree_i[v]++; } } } int ans = 0; for(int i = 1;i <= n; i++){ if(degree_o[i] >= (n+1)/2 || degree_i[i] >= (n+1)/2){ ans++; } } printf("%d\n",ans); } return 0; }C++ :
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,m,tot=0,a[100][100],b[100][100];//a[i][j]数组为1表示i比j重,b[i][j]表示i比j轻 void init(); void work(); int main() { init(); work(); return 0; } void init() { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); cin>>n>>m; int x,y; for(int i=1;i<=m;i++) { cin>>x>>y; a[x][y]=1; b[y][x]=1; } } void work() { for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(a[i][k]==1&&a[k][j]==1&&i!=j)a[i][j]=1; if(b[i][k]==1&&b[k][j]==1&&i!=j)b[i][j]=1; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(a[i][j]) a[i][0]++; if(b[i][j]) b[i][0]++; } for(int i=1;i<=n;i++) { if(a[i][0]>=(n+1)/2) tot++; if(b[i][0]>=(n+1)/2) tot++; } cout<<tot<<endl; }
- 1
信息
- ID
- 1452
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者