環境に慣れ羅区U85154
トピックの背景
こんにゃく* S水路E A wが ** *彼は、できるだけ早くこの新しいグループにすぐに決めた(何気なくqwq ... 620を超えるテストの点数を引き抜い)ハイクラス66のy兄貴雲に来ましたペースに追いつくために始めた......もちろんの大物は、彼が関係している最初のものは、キャンパス環境に精通しています。
タイトル説明
水路前S E A W A Yは1つの不純なことが知られているJDFZ内のオブジェクトの J D F.ザZのキャンパスN含有するN個の点を、M M加重無向グラフのエッジ。それはキャンパス内にあるので、ので、この図は、ユニコムでなければなりません。水路S E A ワットY- 長い彼は、キャンパス内のより多くの彼の知識を、道路を残したことを考えるのに十分なナイーブ。しかし、アイドル水路 S E A W A Yとあまりにも遠くに行きたいが、彼はただ、各ポイントの上に行きたかったです。今、彼は高66クラス(グラフ上の一点)から行く準備だ、キャンパス全体を旅しました。彼は長い道を行くだろう、彼はキャンパス全体に旅しました。
入力形式
入力ファイルの最初の行は、整数N含むNを。
Mの後にMの行、三つの整数、U、V、Z有する各行U相、V、Zは、U-から表すU- Vの中へのV Zの長有するZの側に。
出力フォーマット
S *は水路表す整数を備え、出力ファイルの一行のみ、E A W A Yは** *長いパスを取ります。
サンプル入力と出力
入力#1コピー
出力#1コピー
説明/ヒント
データ範囲:
1 \ N \10001≤ N ≤1000,1\ M \1000001≤ M ≤100000。
ソリューション:
元の図面の水問題の試験T3に基づいて...
裸の最大スパニングツリー。
コード:
#include<cstdio>
#include<algorithm>
using namespace std;
int n,u,v,val,tot,ans,cnt;
int fa[1001];
struct node
{
int x,y,z;
}e[100001];
inline bool cmp(const node &a,const node &b)
{
return a.z>b.z;
}
int find(int x)
{
return fa[x]==x?x:fa[x]=find(fa[x]);
}
int main()
{
//freopen("#10.in","r",stdin);
//freopen("#10.out","w",stdout);
scanf("%d",&n);
while(scanf("%d%d%d",&u,&v,&val)!=EOF)
{
e[++tot].x=u;
e[tot].y=v;
e[tot].z=val;
}
for(int i=1;i<=n;i++)
fa[i]=i;
sort(e+1,e+tot+1,cmp);
for(int i=1;i<=tot;i++)
{
int fx=find(e[i].x);
int fy=find(e[i].y);
if(fx!=fy)
{
fa[fx]=fy;
ans+=e[i].z;
cnt++;
}
if(cnt==n-1)
break;
}
printf("%d",ans);
return 0;
}