#include #include const int N=52; int g[N][N]; int c[N]; inline int id(char a1, char a2) { return ((a1-'A')<<1)+(a2=='+'?0:1); } inline void connect(char a1,char a2,char b1,char b2) { if(a1=='0'||b1=='0') return; int u=id(a1,a2)^1,v=id(b1,b2); g[u][v] = 1; } bool toposort(int u) { c[u]=-1; for(int v=0;v