Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <algorithm>#include <vector>#include <cstring>using namespace std;#define max(a,b) (a>b?a:b)#define MAXN 10010int p[MAXN];int q[MAXN];vector<int> edges[MAXN];void addEdge(int u, int v) {edges[u].push_back(v);edges[v].push_back(u);}int in[MAXN];int out[MAXN];int vis[MAXN] = { 0 };struct unit {int input;int output;};int dfs(int u, int *vis) {vis[u] = 1;if (in[u] >= 0) {