超级水题
最近真是到了奇怪的时期
弱智题做起来没意思而且不涨水平….
难题几天又做不出来….
感觉自己渐渐变成了智障……
#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;
}