poj 1861Network(最小生成树)

来源:互联网 发布:页游开服数据 编辑:程序博客网 时间:2024/05/01 22:16

                 原来样例是错……

#include<iostream>#include<algorithm>using namespace std;struct edges{    int s, e;    int len;}edge[15001], record[1001];int parent[1001];int cmp(edges a, edges b){    return a.len<b.len;}void make(int n){int i;for(i=1; i<=n; i++)        parent[i]=i;}int find( int k){    return parent[k]==k?k:parent[k]=find(parent[k]);}void Union(int a, int b){parent[a]=b;}int main(){   int n, m, i, j, max;   int s, e, len;   cin>>n>>m;   for(i=0; i<m; i++)       cin>>edge[i].s>>edge[i].e>>edge[i].len;   sort(edge, edge+m, cmp);   make(n);   j=1;   for(i=0; j<n; i++)   {       s=find(edge[i].s);       e=find(edge[i].e);       if( s!=e )       {           Union(s, e);           record[j].s=edge[i].s;           record[j].e=edge[i].e;           max=edge[i].len;   j++;       }   }   cout<<max<<endl;   cout<<j-1<<endl;   for(i=1; i<j; i++)      cout<<record[i].s<<" "<<record[i].e<<endl;}


原创粉丝点击