關押罪犯(二分答案+染色法判二分圖)
#include<bits/stdc++.h>
using namespace std;
const int N=2e4+100;
const int M=2e5+100;
int h[N],v[M],ne[M],e[M],idx;
int n,m;
int color[N];
void add(int a,int b,int c){
v[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
bool dfs(int u,int col,int rr){
color[u]=col;
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(v[i]<=rr) continue;
if(color[j]){
if(color[j]==color[u]) return false;
}
else{
if(!dfs(j,3-col,rr)) return false;
}
}
return true;
}
bool check(int x){
memset(color,0,sizeof color);
for(int i=1;i<=n;i++){
if(color[i]==0)
if(!dfs(i,1,x)) return false;
}
return true;
}
int main(){
memset(h,-1,sizeof h);
scanf("%d%d",&n,&m);
int l=0,r=0;
for(int i=0;i<m;i++){
int a,b,c;scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
r=max(r,c);
}
while(l<r){
int mid=l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
printf("%d\n",r);
return 0;
}
相關文章
- 關押罪犯 擴充套件域並查集 帶權並查集 二分圖+二分套件並查集
- 二分答案法
- [Python手撕]判斷二分圖Python
- kuangbin——Hamburgers(二分答案)
- c++ 二分答案C++
- 二分答案解題技巧
- 二分圖匹配
- 二分圖最小點覆蓋等於二分圖最大匹配
- 二分圖補充
- 二分圖(例題)
- 『筆記』二分圖筆記
- P1525 [NOIP2010 提高組] 關押罪犯
- 【二分答案】P2390 地標訪問
- P1852 跳跳棋 [LCA思想+二分答案]
- 拆點判定二分圖
- 從CF1702E看二分圖判斷的兩種方法
- wqs二分(帶權二分)
- 二分圖最大權完美匹配
- POJ - 3041 Asteroids 【二分圖匹配】AST
- 圖解--二分查詢樹圖解
- 資訊學奧賽初賽天天練-81-NOIP2015普及組-完善程式-二分答案、二分查詢、中位數、二分邊界、二分時間複雜度時間複雜度
- P1525 NOIP2010 提高組 關押罪犯 題解
- 二分
- 匈牙利演算法模板(二分圖)演算法
- UVA 11080 - Place the Guards(二分圖判定)
- 【UOJ78】二分圖最大匹配
- 圖論-二分圖匹配匈牙利演算法圖論演算法
- C240817C. 團隊協作:二分答案+貪心
- 【題解】AGC007E | 二分答案 複雜度分析GC複雜度
- Gym 101962I Colonial Mansions(二分答案 + 資料結構)資料結構
- 網路流&費用流&二分圖
- 二分圖最大匹配(匈牙利演算法)演算法
- 一些“二分圖染色”板題
- 二分板子
- 聯賽模擬測試5 平均數 二分答案+逆序對
- 二分查詢基礎專題——二分模板
- 二分查詢(一)——純粹的二分查詢
- 匈牙利演算法--二分圖的最大匹配演算法