最小生成樹模闆題
#include <bits/stdc++.h>
using namespace std;
struct node{
int u; int v; int w;
}a[100005];
int fa[305],n,m,ans=0,tot=1;
bool cmp(node x,node y){return x.w <y.w ;}
int find(int x)
{
if(fa[x]==x) return x;
else return fa[x]=find(fa[x]);
}
void kruskal()
{
for(int i=1;i<=n;i++)
fa[i]=i;
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++)
{
if(find(a[i].u )==find(a[i].v )) continue;
fa[find(a[i].u )]=find(a[i].v );
ans=max(ans,a[i].w );
tot++;
if(tot==n) break;
}
return ;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i].u >>a[i].v >>a[i].w ;
}
kruskal();
cout<<n-1<<" "<<ans;
return 0;
}
具體在最小生成樹上都有講