此题显然是一道关于二分图的题目,因为数据较大,且属于最大值最小问题,所以很容易的可以联想到二分猜答案的方法来优化算法。
代码如下:
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#define maxn 20005
using namespace std;
int color[maxn],n,m;
struct edge{
int u,v,w;
};
vector<edge>e;
vector<int>g[maxn],w[maxn];
bool BFS(int s,int c){
queue<int>q;
q.push(s);
color[s]=1;
while(!q.empty()){
int i=q.front();q.pop();
int sz=g[i].size();
for(int k=0;k<sz;k++){