環境に慣れ羅区U85154

環境に慣れ羅区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相VZは、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;
}

おすすめ

転載: www.cnblogs.com/fusiwei/p/11402108.html