Hud 1869 六度分离[基础最短路floyd]
来源:互联网 发布:投资理财源码下载 编辑:程序博客网 时间:2024/05/19 07:42
题目连接:点击打开链接
题目意思很是简单,每对互相认识权值为1就是了。
WA了很多次,附WA带代码。
#include<cstdio>#include<cstring>#define INF 0xffffff#define min(a,b) a>b?b:aconst int N=105;int dp[N][N];int n,m;void Init(){ for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(j==i) dp[i][j]=0; else dp[i][j]=INF; }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { Init(); int i,j,k; for(i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); if(a!=b) { dp[a][b]=1; dp[b][a]=1; } } for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) dp[i][j]=min(dp[i][k]+dp[k][j],dp[i][j]); for(i=0;i<n;i++) { for(j=0;j<n;j++) if(dp[i][j]>7) break; if(dp[i][j]>7) break; } if(i==n&&j==n) printf("Yes\n"); else printf("No\n"); } return 0;}很是不理解为什么会错,后来,我换了一种判断成立的方法就AC了,有很是郁闷,判断的时候为什么会错。
后来了就想到了第二个跳出循环的break回出错,因为每次的j都会为n,而dp[i][n]肯定大于7。我换了一种判断方法避免了出现这种情况,所以就AC了。
代码:
#include<cstdio>#include<cstring>#define INF 0xffffff#define min(a,b) a>b?b:aconst int N=105;int dp[N][N];int n,m;void Init(){ for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(j==i) dp[i][j]=0; else dp[i][j]=INF; }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { Init(); int i,j,k; for(i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); if(a!=b) { dp[a][b]=1; dp[b][a]=1; } } for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) dp[i][j]=min(dp[i][k]+dp[k][j],dp[i][j]); bool flag=false; for(i=0;i<n;i++) for(j=0;j<n;j++) if(dp[i][j]>7) flag=true; if(!flag) printf("Yes\n"); else printf("No\n"); } return 0;}//AC again#include<cstdio>#include<cstring>#define INF 0xffffff#define min(a,b) a>b?b:aconst int N=105;int dp[N][N];int n,m;void Init(){ for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(j==i) dp[i][j]=0; else dp[i][j]=INF; }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { Init(); int i,j,k; for(i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); if(a!=b) { dp[a][b]=1; dp[b][a]=1; } } for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) dp[i][j]=min(dp[i][k]+dp[k][j],dp[i][j]); for(i=0;i<n;i++) { for(j=0;j<n;j++) if(dp[i][j]>7) break; if(dp[i][j]>7&&j!=n) break; } if(i==n&&j==n) printf("Yes\n"); else printf("No\n"); } return 0;}最短路,慢慢来。come on!加油!
- Hud 1869 六度分离[基础最短路floyd]
- hdu 1869 六度分离(floyd最短路)
- HDOJ 1869 六度分离 (最短路 Dijkstra && SPFA && Floyd)
- HDOJ 1869 六度分离(最短路之floyd)
- hdu 1869 六度分离(最短路floyd)
- hd 1869 六度分离(最短路 Floyd算法)
- 【HDU】-1869-六度分离(最短路)(floyd)
- HDOJ 1869 六度分离(floyd最短路~)
- 六度分离(hdu1869,floyd最短路)
- hdu1869六度分离【最短路dijkstra&&SPFA&&floyd】
- HDU-1869 六度分离 最短路
- HDU-1869-六度分离【最短路】
- 六度分离(floyd算法,SPFA算法,最短路—Dijkstra算法)
- 【最短路径floyd算法】HDU 1869---六度分离
- HDU 1869 六度分离 (最短路径---floyd)
- 1869 六度分离【floyd】
- hdu 1869(最短路flody-六度分离)
- hdu 1869 六度分离【裸最短路】
- 初学CEGUI和OGRE
- Java Runtime.exec()注意事项
- linux的zip 命令
- 七大排序算法
- C++中不太注意的一些小知识点
- Hud 1869 六度分离[基础最短路floyd]
- VIM命令大收集
- 记第一次参加招聘会的过程和感想
- 黑马程序员------java中可能出现的面试题(重点)
- 大根堆算法
- POJ 2559 —— 栈
- 基于LDA的Topic Model变形与发展
- 神奇的图像处理算法
- 【LeetCode】Validate Binary Search Tree