POJ 1258 Agri-Net
最小生成树问题。
用矩阵输入的。
不过很忧伤的是用G++ 提交AC。。C++ 就一直RE。
不过题中说了最多 100 X 100 的矩阵啊。
Logically, they are N lines of N space-separated integers. Physically, they are limited in length to 80 characters, so some lines continue onto others.
→_→ 不知各位怎么理解这句。
#include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<queue> #include<map> #include<stack> #include<iostream> #include<list> #include<set> #include<cmath> #define INF 0x7fffffff #define eps 1e-6 using namespace std; int n; struct lx { int u,v,len; } l[500*1001]; int fa[1001]; bool cmp(lx a,lx b) { return a.len<b.len; } int father(int x) { if(x!=fa[x]) return fa[x]=father(fa[x]); } int main() { while(scanf("%d",&n)!=EOF) { for(int i=0; i<=n; i++) fa[i]=i; int cot=0; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { int len; scanf("%d",&len); if(i==j)continue; l[cot].u=i; l[cot].v=j; l[cot++].len=len; } sort(l,l+cot,cmp); int ans=0; for(int i=0; i<cot; i++) { int fu=father(l[i].u); int fv=father(l[i].v); if(fu==fv)continue; fa[fv]=fu; ans+=l[i].len; } printf("%d\n",ans); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。