标签:des style blog color os io strong for
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 10194 | Accepted: 4333 |
Description
Input
Output
Sample Input
5 8 1 2 3 1 3 7 2 3 10 2 4 4 2 5 8 3 4 6 3 5 2 4 5 17
Sample Output
42
题意:给定每条路线间须要的费用,建造一个最贵的网络线路(随意两节点都能够互相达到,可是不存在回路),求最多须要花费多少钱。
思路:最大生成树。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 1500000
int f[M];
int sum,t;
struct node
{
int x,y,l;
}p[M],v[M];
bool cmp(node a,node b)
{
return (a.l>b.l);
}
void Init (int n)
{
for(int i=1;i<=n;i++)
f[i]=i;
}
int find(int x)
{
if(x!=f[x])
return f[x]=find(f[x]);
return f[x];
}
int Union(int x,int y,int z)
{
int fx,fy;
fx=find(x);
fy=find(y);
if(fx!=fy)
{
f[fy]=fx;
sum+=z;
t++;
}
return sum;
}
int main ()
{
int n,m;
int i;
while(cin>>n>>m)
{
Init(n);
memset(p,0,sizeof(p));
sum=0;
t=0;
for(i=0;i<m;i++)
cin>>p[i].x>>p[i].y>>p[i].l;
sort(p,p+m,cmp);
for(i=0;i<m;i++)
Union(p[i].x,p[i].y,p[i].l);
if(t==n-1)
cout<<sum<<endl;
else
cout<<"-1"<<endl;
}
return 0;
}poj 2377 Bad Cowtractors,布布扣,bubuko.com
标签:des style blog color os io strong for
原文地址:http://www.cnblogs.com/mfrbuaa/p/3893118.html