Cod sursa(job #339539)

Utilizator razvi9Jurca Razvan razvi9 Data 10 august 2009 11:46:44
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include<cstdio>
#include<deque>
#include<stack>


int n,m,i,j,k,g[100001],nr;
std::deque<int> a[100001];
std::deque<int>::iterator it;
std::stack<int> s;


void conex(int v)
{
	++nr;
	g[v] = 1;
	for(int i = 0;i<a[v].size();++i)
		if(!g[a[v][i]])
			conex(a[v][i]);
}

int euler()
{
	for(i=1;i<=n;++i)
		if(g[i]%2) return 0;
	memset(g,0,sizeof(g));
	conex(1);
	return nr == n;
}

void del(int w,int x)
{
	for(it = a[w].begin(); it!=a[w].end(); ++it)
		if(*it == x) break;
	a[w].erase(it);
}

int main()
{
	//freopen("ciclueuler.in","r",stdin);
	//freopen("ciclueuler.out","w",stdout);
	//scanf("%d %d",&n,&m);
	//for(;m;--m)
	//{
	//	scanf("%d %d",&i,&j);
	//	++g[i];++g[j];
	//}
	//for(i=1;i<=n;++i)
	//{
	//	a[i].resize(g[i]);
	//	g[i] = 0;
	//}
	//fclose(stdin);
	//freopen("ciclueuler.in","r",stdin);
	//scanf("%d %d",&n,&m);
	//for(;m;--m)
	//{
	//	scanf("%d %d",&i,&j);
	//	a[i][g[i]] = j;
	//	++g[i];
	//	a[j][g[j]] = i;
	//	++g[j];
	//}
	//if(!euler())
	//	printf("-1");
	//else
	//{
	//	s.push(1);
	//	nr = 0;
	//	while(!s.empty())
	//	{
	//		if(a[s.top()].size() == 0)
	//		{
	//			g[++nr] = s.top();
	//			s.pop();
	//		}
	//		else
	//		{
	//			i = s.top();
	//			j = a[i][0];
	//			a[i].pop_front();
	//			del(j,i);
	//			s.push(j);
	//		}
	//	}
	//	for(i=1;i<nr;++i)
	//		printf("%d ",g[i]);
	//}
	//fclose(stdout);
	return 0;
}