#include using namespace std; typedef long long ll; typedef long double ld; #define REP(i, N) for(int i=0;i<(N);++i) #define FOR(i, a, b) for(int i=(a);i<=(b);++i) #define FORI(i, a, b) for(int i=(a);i<(b);++i) #define FORD(i, a, b) for(int i=(b)-1;i>=(a);--i) int N,K; int A[1000], B[1000]; struct Vrchol{ vector hrany; int match; int tried; }; Vrchol vrcholy[222]; int iter; bool matchleft(int l){ if(l==-1) return true; Vrchol& vl=vrcholy[l]; if(vl.tried==iter) return false; vl.tried=iter; REP(i, vl.hrany.size()){ if(vl.hrany[i]==vl.match) continue; if(matchleft(vrcholy[vl.hrany[i]].match)){ vl.match=vl.hrany[i], vrcholy[vl.hrany[i]].match = l; return true; } } return false; } void matchallleft(){ for(int i=0;i<2*K;++i){ vrcholy[i].tried = 0; vrcholy[i].match = -1; } for(int i=0;i