#include #include //#include #include #include #include using namespace std; int M,N; bool visited[302]; int edges[302][302]; int color[302][302]; bool connected[302][302]; int inputs[302*302*2]; int col_match[302]; bool row[302]; int numEdges[302]; int order[302]; pair edgy[302]; void dfs(int i, bool isRow) { if(visited[i])return; visited[i] = true; row[i] = isRow; //if(isRow)fout<<"row "<>N>>M; memset(visited,false,sizeof(visited)); memset(row,false,sizeof(row)); memset(edges,-1,sizeof(edges)); memset(color,-1,sizeof(color)); memset(connected,false,sizeof(connected)); memset(col_match,-1,sizeof(col_match)); memset(numEdges,0,sizeof(numEdges)); for(int i=0;i>j; fin>>k; j--;k--; inputs[i*2]=j; inputs[i*2+1]=k; connected[j][k] = connected[k][j] = true; numEdges[j]++; numEdges[k]++; maxK = max(maxK,max(numEdges[j],numEdges[k])); } for(int i=0;inumEdges[order[j]]) { int temp = order[i]; order[i] = order[j]; order[j] = temp; } } } dfs(0,true); //for(int i=0;i