Cod sursa(job #1132522)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 3 martie 2014 16:07:00
Problema Party Scor 30
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 1.23 kb
#include<fstream>
#include<stdlib.h>
#include<ctime>
#define dim 1002

using namespace std;

ifstream f("party.in");
ofstream g("party.out");

struct cub{
    int x,y,c;
};
cub v[dim];
int n,m,cnt;
int C[dim];

int check (int k,int i){

    if(k==0){
        return C[v[i].x] || C[v[i].y];
    }

    if(k==1){

        return C[v[i].x] || !C[v[i].y];
    }
    if(k==2){
        return !C[v[i].x] || C[v[i].y];
    }
    if(k==2){
        return C[v[i].x]+C[v[i].y]!=2;
    }
    return 0;
}
int main () {


    f>>n>>m;


    for(int i=1;i<=m;++i){
        f   >>  v[i].x  >>v[i].y    >>v[i].c;
    }
    for(int i=1;i<=n;++i){
        C[i]=1;
    }

    for(int i=1;i<=m;++i){


        if( check (v[i].c,i)  ==  0) {

            int idx=rand()%2;

            if( idx==1 ){

              C[v[i].x] =!C[v[i].x];

            }
            else{

                C[v[i].y]=!C[v[i].y];

            }

            i=0;
        }

    }
        for(int i=1;i<=n;++i){

            if(C[i])
                ++cnt;
        }
        g<<cnt<<"\n";

        for(int i=1;i<=n;++i){
            if(C[i]){
                g<<i<<"\n";
            }

        }

    return 0;

}