hdu 4034
来源:互联网 发布:阿里云免费企业邮箱 编辑:程序博客网 时间:2024/05/17 05:01
题意:给你图中任意两点间的最短路距离,求原图中边数最少是多少?
这题应该不难想,显然如果可以由其他边迭代到这个点的话就不用连边,只要统计一下要删去的边数,而且很明确的一点是这里迭代只需要1个点去迭代,因为任意两点间都是最短,那么必然存在1个点迭代使得这两点最短,假设求i->j的最短路 ,可以迭代i->k->h->g->j,肯定在中间k,h,j有一个点使得i-j最短,假设这个点是h那么必然i->h=i->k->h;h->j=h->g->j;因为都是最短路;说了这么多是为什么?因为我要将以前求flody的最外层放里面去。。。希望你能够理解为什么能这么做。
Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryCode Len.LanguageAuthor46130992011-09-16 19:38:13Accepted4034140MS308K943 BG++xym2010
#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#include<iostream>using namespace std;int gp[105][105],n;int work(){int flag=1,count=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(i==j)continue;for(int k=1;k<=n;k++){if(i==k||j==k)continue;if(gp[i][j]>gp[i][k]+gp[k][j]&&gp[i][k]&&gp[k][j]){flag=0;return -1;}elseif(gp[i][j]==gp[i][k]+gp[k][j]&&gp[i][k]&&gp[k][j]){count++;break;}}}return count;}int main(){int T,t,num;scanf("%d",&T);for(t=1;t<=T;t++){num=0;scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){scanf("%d",&gp[i][j]);if(gp[i][j]!=0)num++;}printf("Case %d: ",t);int tem=work();if(tem==-1)printf("impossible\n");elseprintf("%d\n",num-tem);}return 0;}
- hdu 4034
- hdu 4034
- 【floyd】hdu 4034
- HDU 4034 图论 Floyd
- HDU 4034 Graph
- hdu 4034 floyd Graph
- hdu 4034 Graph (floyd)
- hdu 4034 graph
- HDU 4034 floyd
- HDU 4034(Graph)
- hdu 4034 - Graph
- hdu 4034 Graph Floyd
- HDU 4034 Graph
- HDU 4034 Graph
- HDU-4034-Graph
- HDU 4034 Graph
- hdu 4034 【floyed变形】
- hdu
- XdictGrb.dll引用失败的解决方法
- 全体是合同,多学学吧。当前少吃亏。
- 字符设备驱动之笔记-中断上下部
- 最近学习C语言中的精华
- Waiting for instances to leave
- hdu 4034
- vi 编辑器
- Android mineType总结
- crontab调用shell访问oracle问题
- 我是学习 “软件工程” 专业的一名 本科生,请问考一些跟 编程 有关的证书面试的时候有用吗? 用处大吗?
- shell文件从windows上传到Linux问题
- 白叟求助民警遭礼遇 错误称有引导亲戚后获报歉
- 从EXCEL导入数据到SQL已有表中的方法
- 没有那个文件或目录错误