ZOJ 1586&&FZU 1096 QS Network(kuangbin带你飞 专题六 最小生成树)
2015-01-29 16:04
399 查看
这个题...好水,不过多了一个顶点的权值,所以建立某条边的话费就是边的花费+;两个顶点的花费...
这种各种找简单题做也不是办法...专题一还剩一道题...明天尽力给A掉...一直没看懂来着..好好努力...寒假眼看就剩一个月了
这种各种找简单题做也不是办法...专题一还剩一道题...明天尽力给A掉...一直没看懂来着..好好努力...寒假眼看就剩一个月了
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> using namespace std; int n,map[1023][1023],f[1023],p[1023]; struct node { int x,y,s; }s[600000]; int cmp(node a,node b) { return a.s<b.s; } void inti() { for(int i=0;i<=n;i++) f[i]=i; } int find(int x) { if(x!=f[x]) return f[x]=find(f[x]); return x; } int main() { int T; cin>>T; while(T--) { cin>>n; inti(); for(int i=1;i<=n;i++) cin>>p[i]; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); } int k=0; for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { s[k].x=i,s[k].y=j,s[k].s=p[i]+p[j]+map[i][j]; k++; } } sort(s,s+k,cmp); int ans=0,t=0; for(int i=0;i<k;i++) { int x=find(s[i].x); int y=find(s[i].y); if(x!=y) { f[x]=y; t++; ans+=s[i].s; } if(t==n-1) break; } cout<<ans<<endl; } return 0; }
相关文章推荐
- POJ 2349&&ZOJ 1914 Arctic Network(kuangbin带你飞 专题六:最小生成树)
- kuangbin带你飞 专题六 最小生成树 1586(基本都是水题)
- zoj 1586 QS Network【最小生成树 kruskal && prim】
- zoj 1586 最小生成树prim水题
- ZOJ 【2108】Agri-Net(最小生成树)模拟生成树&普利姆算法
- hdu 1875 畅通工程再续(kuangbin带你飞 专题六:最小生成树)
- POJ 1679 The Unique MST(kuangbin带你飞 专题六:最小生成树)
- zoj 1586 最小生成树 prim算法
- zoj 1586 QS Network(最小生成树))
- POJ 1251 HDU 1301 Jungle Roads(kuangbin带你飞 专题六:最小生成树)
- ZOJ 1586 QS Network(最小生成树 prim)
- zoj 1586 QS Network (最小生成树)
- ZOJ 1584:Sunny Cup 2003 - Preliminary Round(最小生成树&&prim)
- POJ 1287 Networking (kuangbin带你飞 专题六:最小生成树)
- 最小生成树 zoj-1586 QS Network
- zoj(1586)最小生成树
- zoj1586 QS Network ——最小生成树入门题_Prim算法
- zoj 1586 QS Network 最小生成树
- POJ 1258 Agri-Net(kuangbin带你飞 专题六:最小生成树)
- POJ 2421 HDOJ 1102 Constructing Roads(kuangbin带你飞 专题六:最小生成树)