一道最小生成树的裸题233。
贴个版子
#include<bits/stdc++.h>
using namespace std;
int f[301];
int n,m,num;
int Ans;
struct edge{
int x;
int y;
int w;
void read(){
scanf("%d%d%d",&x,&y,&w);
}
};edge ed[10001];
bool cmp(const edge &A,const edge &B)
{
return A.w<B.w;
}
int find(int x)
{
if(x==f[x])return f[x];
return f[x]=find(f[x]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
f[i]=i;
for(int i=1;i<=m;i++)
ed[i].read();
sort(ed+1,ed+m+1,cmp);
num=0;
//for(int i=1;i<=m;i++)
//if(ed[i].x>ed[i].y)swap(ed[i].x,ed[i].y);
for(int i=1;i<=m;i++)
{
int fx=find(ed[i].x);
int fy=find(ed[i].y);
if(fx!=fy){
Ans=ed[i].w;
f[fx]=fy;
}
}
cout<<n-1<<" "<<Ans;
return 0;
}