Cod sursa(job #735640)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 16 aprilie 2012 21:58:06
Problema Party Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
#include<cstdlib>
#define dim 102
#include<ctime>
using namespace std;


ifstream f("party.in");
ofstream g("party.out");
int A[dim],C[10*dim],n,m,i,Nr;
struct inv {
	int x,y;
	short int c;
}
v[10*dim];
int verificare( int k )  {
	
	if((  C[v[i].x] || C[v[i].y]    )&& k==0)
		return 1;
	
	if((k==1) && (C[v[i].x] || !C[v[i].y]))
		return C[v[i].x];
	
	if((k==2) && (!C[v[i].x]||C[v[i].y]))
		return 1;
	
	if(k==3  && C[v[i].x]+C[v[i].y]!=2 )
		return 1;
	
	return 0;
}
int main () {
	
	f>>n>>m;
	
	for(i=1;i<=m;i++)
		f>>v[i].x>>v[i].y>>v[i].c;
	for(i=1;i<=n;i++)
		C[i]=1;
	srand(time(NULL));
	for(i=1;i<=m;i++){
		
		if(!verificare(v[i].c)) {
			int a=rand()%2;
			
			if(  a==1  ) {
				C[v[i].y]=!C[v[i].y];
			}
			else {
				C[v[i].x]=!C[v[i].x];
			}		
		}
	}
	for(i=1;i<=n;i++)
		if(C[i]){
			++Nr;
			A[Nr]=i;
		}
	g<<Nr<<"\n";
	for(i=1;i<=Nr;++i) {
		g<<A[i]<<"\n";
	}
	return 0;
}