HDU 1879 继续畅通工程
2014-09-01 11:43
274 查看
最小生成树Kruskal
原理参见上篇
原理参见上篇
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; const int maxn=105; int x[maxn],y[maxn]; int v[maxn*maxn],u[maxn*maxn],w[maxn*maxn]; int fa[maxn]; int r[maxn*maxn]; bool cmp (int x,int y){ return w[x]<w[y]; } int find (int x){ if (fa[x]==x) return x; return fa[x]=find (fa[x]); } int main (){ int t; //scanf ("%d",&t); int n; while (~scanf ("%d",&n)&&n){ int m=n*(n-1)/2; for (int i=0;i<m;i++){ int a,b; scanf ("%d%d%d%d",&v[i],&u[i],&a,&b); if (b) w[i]=0; else w[i]=a; } for (int i=1;i<=n;i++) fa[i]=i; for (int i=0;i<m;i++) r[i]=i; int temp=0; sort (r,r+m,cmp); long long ans=0; for (int i=0;i<m;i++){ int fv=find(v[r[i]]); int fu=find(u[r[i]]); if (fv!=fu){ ans+=w[r[i]]; temp++; fa[fv]=fu; }//cout<<w[r[i]]<<" "; } //if (temp==n-1) printf ("%I64d\n",ans); } return 0; }
相关文章推荐
- hdu 1879 继续畅通工程 (prim)
- HDU 1879 继续畅通工程
- hdu - 1879 - 继续畅通工程
- hdu 1879 继续畅通工程
- HDU 1879 继续畅通工程
- HDU 1879 继续畅通工程(最小生成树 Kruskal算法)
- 继续畅通工程 hdu 1879
- HDU 1879 继续畅通工程
- HDU 1879 继续畅通工程
- hdu 1879 继续畅通工程 解题报告
- HDU 1879 继续畅通工程
- HDU 1879 继续畅通工程
- hdu 1879 继续畅通工程
- HDU 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- HDU 1879 继续畅通工程
- 【解题报告】 HDU 1879 继续畅通工程 并查集 + 贪心
- 【最小生成树+kruskal】杭电 hdu 1879 继续畅通工程