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

求问北邮14年计算机复试“网络的核”的一个问题

jaegerstar
2016/3/19镜像同步2 回复
问题见最后的注释处,我好菜……[ema1] oj链接:http://code.bupt.edu.cn/problem/p/272/ #include <stdio.h> #include <iostream> using namespace std; int ans[53][53]; int main() { int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); //初始化ans数组 for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ ans[i][j]=-1; } ans[i][i]=0; } //将边的权值设为1 while(m--) { int a,b,c; scanf("%d%d",&a,&b); ans[a][b]=ans[b][a]=1; } //floyd算法 for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) { if(ans[i][k]==-1 || ans[k][j]==-1) continue; if(ans[i][j]==-1 || ans[i][j]>ans[i][k]+ans[k][j]) ans[i][j]=ans[i][k]+ans[k][j]; } } } //将独立点到连通图上的点的权值设为节点数量N for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(ans[i][j]==-1)//OE?EE·?¨jI??AA?ua { for(int k=1;k<=n;k++) ans[k][j]=ans[j][k]=n; } } } /* for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) { printf("%d",ans[i][j]); } printf("\n"); } */ //将ans矩阵每一行相加,取行和最小的那一行的行标输出 int hhh=0,flag=1,min,answer; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) { hhh+=ans[i][j]; if(j==n && flag==1) //第一行加的结果赋值给min { flag--; min=hhh; answer=i; } if(j==n && flag<=0 && hhh<min) //除第一行外,行和的结果均和min作比较,小则给min { min=hhh; answer=i; } } hhh=0; } cout<<answer<<endl;//这个地方为什么用printf("%d\n",&answer);总是出垃圾值 //顺便求点进贴的大神帮忙看看忽略了啥地方,代码在本地测试了好多用 //例都是行的,到oj就是不过…… } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
nuanyangyang机器人#1 · 2016/3/19
- printf("%d\n",&answer); + printf("%d\n",answer);
jaegerstar机器人#2 · 2016/3/19
擦。。低级错误。。。。 【 在 nuanyangyang 的大作中提到: 】 : - printf("%d\n",&answer); : + printf("%d\n",answer);