选择题+编程题 官网有:GESP官网
编程题 1:交流问题
知识点: 宽搜, 深搜, 二分图染色; 并查集:拆点法
思路1
深搜染色, 直接上代码
源代码
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
const int N = 1e5+10;
vector<int> g[N];
int h[N], ans1, ans2, A, B;
void dfs(int i, int col){
if(!h[i]){
h[i] = col;
if(col==1) A++;
else B++;
for(int v:g[i])
dfs(v, 3-col);
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
for(int i=1;i<=m;++i){
int u, v;
scanf("%d %d", &u, &v);
g[u].push_back(v