求大佬进房(玄关)
查看原帖
求大佬进房(玄关)
785505
G1yu楼主2024/7/16 11:49

rt
来都来了帮帮蒟蒻吧!
WA,30pts,二分图+二分答案求调

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+3;
int cnt,head[N];
struct Edge{
	int to,val,nxt;
}e[N+33];
int col[N];

void add(int u,int v, int w){
	e[++cnt].to = v;
	e[cnt].val = w;
	e[cnt].nxt = head[u];
	head[u] = cnt;
}
//int as,bs;
bool dfs(int x,int c,int lim){
//	c== 1?as++:bs++;
	col[x] = c;
	
	bool flag = 1;
	for(int i = head[x];i;i = e[i].nxt)if(e[i].val > lim){
		int v = e[i].to;
		if(!col[v]) {
			flag = flag && dfs(v,3-c,lim);
		}
		if(col[v] == c){ flag  = false;}	
	}
	return flag;
	
}

signed main(){
	int n,m;
	cin>>n>>m;
	for(int i = 1; i<=m; i++){
		int u,v,w;
		cin>>u>>v>>w;
		add(u,v,w);
		add(v,u,w);
	}
	int l = 0, r = 2e9,ans = 0;
	while (l<=r){
		int mid = (l+r)/2;
		memset(col,0,sizeof col);
//		as = 0,bs= 0;
		if(dfs(1,1,mid)){
			ans = mid;
			r=mid - 1;
		}
		else l = mid + 1;
	}
	cout<<ans;
	
	
	return 0;
}
2024/7/16 11:49
加载中...