BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #88943同步于 2016/3/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

[求助] bupt oj 272.网络的核 WA

yyss1230
2016/3/1镜像同步8 回复
代码测试好多遍觉得没问题,为啥WA呢?求指点! #include<stdio.h> #include<string.h> #define MaxSize 51 int path[ MaxSize ][ MaxSize ]; int findKernelByFloyd( int N ) { for( int i = 1; i <= N ; i++ ) { for( int j = 1; j <= N; j++ ) { if( i == j ) { path[ i ][ j ] = 0; } else { for( int k = 1; k <= N; k++ ) { if( path[ i ][ j ] > path[ i ][ k ] + path[ k ][ j ] ) { path[ i ][ j ] = path[ i ][ k ] + path[ k ][ j ]; } } } } } int kernelNode = 1; int tmpDisCount = 0; int minDisNum = N * N; for( int i = 1; i <= N ; i++ ) { for( int j = 1; j <= N; j++ ) { tmpDisCount += path[ i ][ j ]; } if( tmpDisCount < minDisNum ) { minDisNum = tmpDisCount; kernelNode = i; } tmpDisCount = 0; } return kernelNode; } int main() { int T; scanf( "%d", &T ); while( T-- ) { int N, M; fflush( stdin ); scanf( "%d %d", &N, &M ); for( int i = 1; i <= N ; i++ ) { for( int j = 1; j <= N; j++ ) { path[ i ][ j ] = N; } } while( M-- ) { int u, v; scanf( "%d %d", &u, &v ); path[ u ][ v ] = 1; path[ v ][ u ] = 1; } printf( "%d\n", findKernelByFloyd( N ) ); } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
chenxiansf机器人#1 · 2016/3/1
又是楼主。。。是不是在准备考研复试啊,真是辛苦了。 我看我的代码好像是用floyd做的,感觉代码不太长啊,你参考一下。 /* USER_ID: test#yingzinanfei PROBLEM: 272 SUBMISSION_TIME: 2015-03-26 10:38:04 */ #include<stdio.h> int matrix [51][51]; int dis[51]; int main(){ int t; while(scanf("%d", &t) != EOF){ for(int a = 1; a <= t; a++){ int n, m; scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ matrix[i][j] = n; } matrix[i][i] = 0; } for(int i = 1; i <= m; i++){ int u, v; scanf("%d%d", &u, &v); matrix[u][v] = matrix[v][u] = 1; } for(int k = 1; k <= n; k++){ for(int i = 1; i <= n; i ++){ for(int j = 1; j <= n; j++){ if(matrix[i][k] == n || matrix[k][j] == n) continue; if(matrix[i][j] == n || matrix[i][j] > matrix[i][k] + matrix[k][j]){ matrix[i][j] = matrix[i][k] + matrix[k][j]; } } } } for(int i = 1; i <= n; i++){ dis[i] = 0; } for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ dis[i] += matrix[i][j]; } } int distance = n * n; int idx = 0; for(int i = 1; i <= n; i++){ if(dis[i] < distance){ idx = i; distance = dis[i]; } } printf("%d\n", idx); } } return 0; } 【 在 yyss1230 的大作中提到: 】 : 代码测试好多遍觉得没问题,为啥WA呢?求指点! : #include<stdio.h> : #include<string.h> : ...................
yyss1230机器人#2 · 2016/3/1
拜读啦 非常感谢你的分享! 逻辑是一致的,就是没查出我写的哪里有问题。。 是在准备复试,其实写代码倒还好,就是OJ上找不出问题很纠结啊 【 在 chenxiansf 的大作中提到: 】 : 又是楼主。。。是不是在准备考研复试啊,真是辛苦了。 : 我看我的代码好像是用floyd做的,感觉代码不太长啊,你参考一下。 : [code=c] : ...................
chenxiansf机器人#3 · 2016/3/1
不要着急,慢慢查。你这水平机试已经妥妥地没问题了 【 在 yyss1230 的大作中提到: 】 : 拜读啦 非常感谢你的分享! : 逻辑是一致的,就是没查出我写的哪里有问题。。 : 是在准备复试,其实写代码倒还好,就是OJ上找不出问题很纠结啊
yyss1230机器人#4 · 2016/3/1
[ema11]多谢鼓励。。 【 在 chenxiansf 的大作中提到: 】 : 不要着急,慢慢查。你这水平机试已经妥妥地没问题了
chinapds机器人#5 · 2016/3/1
计算机院还是网研? 网研的话,你看往年的题型就知道难度了,很水的。 计算机的不了解 【 在 yyss1230 的大作中提到: 】 : 多谢鼓励。。
whn6325689机器人#6 · 2016/3/1
floyd写错了 K要在最外面
yyss1230机器人#7 · 2016/3/1
没错。。拜谢! 【 在 jasonkent 的大作中提到: 】 : floyd算法的k是要在最外层的,不然i,j的路径早早确定,下次遇到更短路没办法更新导致出错
yyss1230机器人#8 · 2016/3/1
是滴是滴 谢谢啦 【 在 whn6325689 的大作中提到: 】 : floyd写错了 : K要在最外面