Untitled
unknown
plain_text
2 years ago
1.2 kB
4
Indexable
#include<iostream> using namespace std; int N ,E; int M[10000]; int mtk[1005][1005]; int visit[1005]; int f=-1, r=-1; int Q[100000]; void push(int x) { f++; Q[f] =x; } void pop(int &x) { r++; x= Q[r]; } void reset_visit() { for(int i=1; i <= N; i++) { visit[i] =-1; } } bool bfs(int x) { f=r=-1; push(x); visit[x]= 0; while(f != r) { pop(x); for(int i=1; i<= N; i++) { if(mtk[x][i] == 1 && visit[x] == visit[i] ) { return false; } if(mtk[x][i] ==1 && visit[i] == -1) { push(i); if(visit[x] == 0) { visit[i] =1;} else { visit[i] =0; } } } } return true; } int main() { int t; cin >> t; for(int stt=1; stt <=t; stt++) { cin >> N >> E; for(int i=1; i<=N; i++) { for(int j=1; j<=N; j++) { mtk[i][j] =0; } } for(int i=1; i<= 2*E; i=i+2) { cin >> M[i] >> M[i+1]; mtk[M[i]][M[i+1]] = mtk[M[i+1]][M[i]] =1; } /////////////////////// reset_visit(); if(bfs(1)){ cout << "#" << stt << " " ; for(int i=1; i<= N; i++){ cout << visit[i] ; } cout << endl; } else { cout << "#" << stt << " -1" << endl;} } }
Editor is loading...