题目大意:给定一张图,每条边的两个方向有两个不同的权值,现在要求从1号节点出发遍历每条边一次且仅一次,最后回到1号节点,求最大边权的最小值
谁TM翻译的这道题给我滚出来看我不打死你
二分最大边的权值,然后就是经典的判断混合图欧拉回路存在性的问题了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 2020
#define S 0
#define T 2019
#define INF 0x3f3f3f3f
using namespace std;
struct edge{
int x,y,z1,z2;
}edges[M];
int n,m,max_num;
namespace Euler_Circuit{
namespace Union_Find_Set{
int fa[M],size[M],cnt;
void Initialize()
{
memset(fa,0,sizeof fa);
cnt=n;
}
int Find(int x)
{
if(!fa[x])
fa[x]=x,size[x]=1;
if(fa[x]==x)
return x;
return fa[x]=Find(fa[x]);
}
void Union(int x,int y)
{
x=Find(x);y=Find(y);
if(x==y) return ;
if(size[x]>size[y])
swap(x,y);
fa[x]=y;size[y]+=size[x];
cnt--;