Untitled

 avatar
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...