按照题解写的,不知道哪里错了
查看原帖
按照题解写的,不知道哪里错了
327346
xiaoyu20070727楼主2020/9/25 21:14

代码如下

#include<bits/stdc++.h>
using namespace std;
const int maxn=20009;
const int maxm=200019;
int n,m,fa[maxn],enemy[maxn];
struct edge
{
	int a,b,w;
}p[maxm];
bool cmp(edge x,edge y)
{
	return x.w>y.w;
}
int find(int k)
{
	return k==fa[k]?k:find(fa[k]);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    freopen("1.txt","r",stdin);
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
    	cin>>p[i].a;
    	cin>>p[i].b;
    	cin>>p[i].w;
	}
	for(int i=1;i<=n;i++)fa[i]=i;
	sort(p+1,p+1+m,cmp);
	for(int i=1;i<=m;i++)
	{
		int t1=find(p[i].a);
		int t2=find(p[i].b);
		if(t1==t2)
		{
			cout<<p[i].w;
			return 0;
		}
		if(!enemy[p[i].a])enemy[p[i].a]=p[i].b,enemy[p[i].b]=p[i].a;
		else fa[find(p[i].a)]=find(p[i].b),fa[find(p[i].b)]=find(p[i].a);
	}
	cout<<"0";
	
	return 0;
}

连样例都过不了,样例输入3512,而我输出1805,有人能帮我看看吗、

2020/9/25 21:14
加载中...