Untitled
unknown
plain_text
2 years ago
1.2 kB
5
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...