发现hack
查看原帖
发现hack
745865
Emplace楼主2024/10/20 16:28
#include<bits/stdc++.h>
using namespace std;
struct node{
	int v,x,y;
}; 
node a[10005];
bool cmp(node s1,node s2){
	return s1.v>s2.v;
}
int n,m,f[100005];
int find(int x){
	if(f[x]==x){
		return x;
	}
	return f[x]=find(f[x]);
}
int main(){
//	freopen("prison.in","r",stdin);
//	freopen("prison.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=2*n;i++){
		f[i]=i;
	} 
	for(int i=1;i<=m;i++){
		cin>>a[i].x>>a[i].y>>a[i].v;
	}
	sort(a+1,a+1+m,cmp);
	for(int i=1;i<=m;i++){
		if(find(a[i].x)==find(a[i].y)){
			cout<<a[i].v;
			return 0;
		}
		f[find(a[i].x)]=find(a[i].y+n);
		f[find(a[i].y)]=find(a[i].x+n);
	}
	cout<<0;
	return 0;
}

第二十九行

find(a[i].x)==find(a[i].y)

应该是

find(a[i].x)==find(a[i].y)||find(a[i].x+n)==find(a[i].y+n)

但是前者也能对。 应为如果他们的敌人也在同一阵营,那么也应该直接退出。

2024/10/20 16:28
加载中...