Cod sursa(job #1193699)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 1 iunie 2014 15:35:51
Problema Party Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
//
//  main.cpp
//  party
//
//  Created by Alex Petrache on 01/06/14.
//  Copyright (c) 2014 Alex Petrache. All rights reserved.
//

#include <iostream>
#include <fstream>

using namespace std;
bool ok[109];
struct inv{
    int x,y,z;
    bool check()
    {
        if(z==0)
            return ok[x]||ok[y];
        if(z==1)
            return ok[x]||!ok[y];
        if(z==2)
            return !ok[x]||ok[y];
        if(z==3)
            return !(ok[x]&&ok[y]);
        return 0;
    }
    
    void random()
    {
        int v=rand()%2;
        if(v==0)
            ok[x]=!ok[x];
        else
            ok[y]=!ok[y];
    }
};
inv inviat[1003];
int n,m;

int main()
{
  //  ifstream f("/Users/alexpetrache/Documents/Programare/Xcode/party/party/party.in");
//    ofstream g("/Users/alexpetrache/Documents/Programare/Xcode/party/party/party.out");
    ifstream f("party.in");
    ofstream g("party.out");
    f>>n>>m;
    for(int i=1;i<=n;++i){
        ok[i]=1;
    }
    
    for(int i=0;i<m;++i)
        f>>inviat[i].x>>inviat[i].y>>inviat[i].z;
    
    for(int i=0;i<m;++i)
        if(!inviat[i].check()){
            inviat[i].random();
            i=-1;
        }
    
    int nr=0;
    for(int i=1;i<=n;++i)
        if(ok[i])
            nr++;
    g<<nr<<'\n';
    for(int i=1;i<=n;++i)
        if(ok[i])
            g<<i<<'\n';
    return 0;
}