最小生成树模板题 HDU1233 还是畅通工程
2017-06-01 11:04
288 查看
比上一题要简单,输入是边,就直接用kruskal了
#define mem(a,b) memset(a,b,sizeof(a)) #include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f; const int maxn=101; int n; struct node { int x,y; int w; node(int xx,int yy,int ww) { x=xx,y=yy,w=ww; } }; bool operator <(const node a,const node b) { return a.w>b.w; } int F[maxn]; int f(int x) { if(x==F[x]) return x; return F[x]=f(F[x]); } void Union(int x,int y) { x=f(x),y=f(y); if(x!=y) F[x]=y; } void ini(int n) { for(int i=1;i<=n;++i) F[i]=i; } int main() { while(~scanf("%d",&n),n) { int x,y,z; priority_queue<node>pq; int len=(n*(n-1))/2; for(int i=0;i<len;++i) { scanf("%d%d%d",&x,&y,&z); pq.push(node(x,y,z)); } int ans=0; ini(n); while(!pq.empty()) { node t=pq.top(); pq.pop(); //cout<<t.x<<":"<<f(t.x)<<endl; //cout<<t.y<<":"<<f(t.y)<<endl; if(f(t.x)!=f(t.y)) /*cout<<t.w<<" "<<t.x<<" "<<t.y<<endl,*/Union(t.x,t.y),ans+=t.w; //system("pause"); } printf("%d\n",ans); } }
相关文章推荐
- hdu1233 - 还是畅通工程 (求最小生成树)(Kruskal)
- hdu1233 还是畅通工程 (kruskal求最小生成树)
- HDU 1233 还是畅通工程 最小生成树 Prim模板的应用
- HDU1233 还是畅通工程 【最小生成树】
- hdu1233 还是畅通工程 ( 最小生成树)
- 最小生成树 prim hdu1233 还是畅通工程
- 最小生成树1.0(hdu1233 还是畅通工程)
- Hdu1233-还是畅通工程-【最小生成树】【Kruskal算法】
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- HDU1233 还是畅通工程【最小生成树】
- HDU1233 - 还是畅通工程 最小生成树,用了三种姿势AC
- 最小生成树Prime算法(hdu1233还是畅通工程 、hdu1863畅通工程)
- hdu1233还是畅通工程【最小生成树】
- 最小生成树: HDU1233还是畅通工程
- 最小生成树-hdu1233-还是畅通工程
- hdu1233---还是畅通工程 最小生成树(水)
- 最小生成树(hdu1233还是畅通工程)
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- HDU2988-Dark roads,HDU1233-还是畅通工程-最小生成树
- hdu1233 还是畅通工程【最小生成树】