poj 2377

来源:互联网 发布:手机淘宝联盟 编辑:程序博客网 时间:2024/06/05 11:25

超级水题
最近真是到了奇怪的时期
弱智题做起来没意思而且不涨水平….
难题几天又做不出来….
感觉自己渐渐变成了智障……

#include<iostream>#include<cmath>#include<cstdio>#include<string>#include<vector>#include<algorithm>#include<queue>#include<cstring>using namespace std;int tu[1001][1001];int fa[1001];struct p{    int q, w, e;    bool operator < (const p&a)const {        return e > a.e;    }};int zhao(int x){    while (x != fa[x])    {        x = fa[x];    }    return x;}struct r{    int q, w, e;    bool operator < (const r&a)const {        return e < a.e;    }};int main(){    int n,m;    cin >> n>>m;    int q, w, e;    while (m--)    {        scanf("%d%d%d", &q, &w, &e);        tu[q][w] = max(tu[q][w], e);        tu[w][q] = tu[q][w];    }    for (int a = 0;a <= n;a++)fa[a] = a;    priority_queue<r> rr;    for (int a = 0;a <= n;a++)    {        for (int b = 0;b <= n;b++)        {            if (tu[a][b] == 0)continue;            rr.push({ a, b, tu[a][b] });        }    }    int jishuda = 0;    while (!rr.empty())    {        r qw = rr.top();        rr.pop();        int qww = zhao(qw.q);        int wee = zhao(qw.w);        if (qww == wee)continue;        jishuda += qw.e;        fa[qww] = wee;    }    int biaoji = 0;    int wuw = zhao(fa[1]);    for (int a = 1;a <= n;a++)if (wuw != zhao(fa[a]))biaoji = 1;    if(!biaoji)cout << jishuda << endl;    else cout << -1 << endl;    return 0;}
0 0
原创粉丝点击