标签:style blog color os io for ar 2014 div
The people of Absurdistan discovered how to build roads only last year. After the discovery, every city decided to build their own road connecting their city with another city. Each newly built road can be used in both directions.
Absurdistan is full of surprising coincidences. It took all
You bought a tourist guide which does not have a map of the country with the new roads. It only contains a huge table with the shortest distances between all pairs of cities using the newly built roads. You would
like to know between which pairs of cities there are roads and how long they are, because you want to reconstruct the map of the
You get a table of shortest distances between all pairs of cities in Absurdistan using the
For each test case:
For each test case:
Print a blank line between every two test cases.
Sample Input | Sample Output |
---|---|
4 0 1 2 1 1 0 2 1 2 2 0 1 1 1 1 0 4 0 1 1 1 1 0 2 2 1 2 0 2 1 2 2 0 3 0 4 1 4 0 3 1 3 0 |
2 1 1 4 1 1 4 2 1 4 3 1 2 1 1 3 1 1 4 1 1 2 1 1 3 1 1 2 1 4 3 2 3 |
#include <stdio.h> #include <algorithm> #define INF 999999999 using namespace std; struct E{ int u,v,val; bool operator<(const E &p) const { return val<p.val; } }e[4000005]; int node[2005],dis[2005][2005]; int findroot(int x) { if(node[x]!=x) return node[x]=findroot(node[x]); return node[x]; } int main() { int n,i,j,k,t,u,v,val,cnt,roota,rootb; bool first=1; while(~scanf("%d",&n)) { if(first) first=0; else puts(""); cnt=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { scanf("%d",&val); if(i<=j) continue; e[cnt].u=i; e[cnt].v=j; e[cnt++].val=val; } sort(e,e+cnt); for(i=1;i<=n;i++) node[i]=i; for(i=1;i<=n;i++) for(j=1;j<=n;j++) dis[i][j]=INF; t=0; for(i=0;i<cnt;i++) { roota=findroot(e[i].u); rootb=findroot(e[i].v); if(roota!=rootb) { node[roota]=rootb; dis[e[i].u][e[i].v]=dis[e[i].v][e[i].u]=e[i].val; u=e[i].u,v=e[i].v,val=e[i].val; printf("%d %d %d\n",e[i].u,e[i].v,e[i].val); t++; if(t>=n-1) break; } } for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(dis[i][k]==INF) break;//没有这个优化直接T了。。。 dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); } } } for(i=0;i<cnt;i++) { if(e[i].val!=dis[e[i].u][e[i].v]) { printf("%d %d %d\n",e[i].u,e[i].v,e[i].val); break; } } if(i==cnt) printf("%d %d %d\n",u,v,val); } }
UESTC-888-Absurdistan Roads(kruskal+floyd)
标签:style blog color os io for ar 2014 div
原文地址:http://blog.csdn.net/faithdmc/article/details/38866281