成都网赛1004 &hdu4034
2011-09-11 21:39
423 查看
哎,郁闷 比赛时,WA了n多次,最终也没过,以为算法错了,可想来想去感觉没错啊!以给的最短距离为边建图,然后利用floyd算所有点之间的距离,如果i到j的距离经过k则标记i到j,最后如果i到j被标记了并且求的的最短距离等于原始的(即直连的)则可以把直连的删除即总边数减一。如果求的的距离小于直连标记 输出impossible。 原来是n个点的总边数m应该为n*(n-1); 当时不知道怎么搞成了m=2*n。
View Code
View Code
#include <iostream> #include<cstring> #include<cstdio> using namespace std; int map[105][105]; int dist[105][105]; int aa[105][105]; int n; void ford() { int i,j,k; for (i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=1;k<=n;k++) { if(j!=i&&i!=k&&dist[j][k]>=dist[j][i]+dist[i][k]) { aa[j][k]=1; dist[j][k]=dist[j][i]+dist[i][k]; } } } int main() { int k,i,j,m,ll,gg=0; cin>>k; while (k--) { gg++; memset(map,0,sizeof(map)); memset(dist,0,sizeof(dist)); memset(aa,0,sizeof(aa)); cin>>n; for (i=1;i<=n;i++) for(j=1;j<=n;j++) { cin>>map[i][j]; dist[i][j]=map[i][j]; } m=n*(n-1); ford(); int flag=0; ll=0; for (i=1;i<=n;i++) for(j=1;j<=n;j++) { if(dist[i][j]==map[i][j]&&aa[i][j]) m--; else{ if(dist[i][j]<map[i][j]) flag=1; } } if(flag||m<n-1) cout<<"Case "<<gg<<": "<<"impossible"<<endl; else{ cout<<"Case "<<gg<<": "<<m<<endl; } } return 0; }
相关文章推荐
- 成都赛区 1004
- poj1003&&poj1004
- HDU 4118 Holiday's Accommodation (2011年成都赛区现场赛H题)
- 九度:1004<Median><中位数>
- BestCoder Round #18 1004 &&hdu 5107 K-short Problem 线段树
- [免费活动通知] "DataSnap及移动开发"技术研讨会(成都. 上海站)
- HDU 5715 & 2016"百度之星" 复赛(Astar Round3)1004 XOR游戏(Trie)
- 2012联发科校园招聘成都手机软件部门笔试&第一轮面试
- http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1004&ojid=1&cid=6866&hide=1&problem=Pro
- HDU 4119 Isabella's Message (2011年成都赛区现场赛I题)
- HDU 5895&&2016 ACM/ICPC Asia Regional Shenyang Online1004 Mathematician QSC [矩阵加速+欧拉降幂]【数论】
- dp训练 1004
- BestCoder Round #75 1003 - King's Order & 1004 - King's Game
- 2012联发科校园招聘成都手机软件部门笔试&第一轮面试
- POJ 1004 Financial Management(…
- 解决打开WEB ADI的excel文件时出现Run-time error '1004' 的错误
- 【欧拉回路】toj 1004 John's trip
- HDUOJ5835Danganronpa&&2016中国大学生程序设计竞赛 - 网络选拔赛1004
- POJ 1004 && HDU 1064 Financial Management(水~)
- 关于"sharepoint Portal Server2003深入指南"的读书笔记--2006年10月20 星期五 天气:晴 地点:成都