Pagini recente » Cod sursa (job #2728465) | Cod sursa (job #2313272) | Cod sursa (job #2142126) | Cod sursa (job #3191739) | Cod sursa (job #480950)
Cod sursa(job #480950)
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int NMAX = 1010;
const int MMAX = 10010;
int N, M;
int Bl[MMAX][4];
int val[NMAX];
vector<int> rel[NMAX];
void citire()
{
cin >> N >> M;
for(int i = 1 ; i <= M ; i++)
{
cin >> Bl[i][1] >> Bl[i][2] >> Bl[i][0];
rel[Bl[i][1]].push_back(i);
rel[Bl[i][2]].push_back(i);
}
fill(val + 1 , val + N + 1, 1);
}
inline void aleator(int i)
{
int x = rand() % 2 + 1;
val[Bl[i][x]] = !val[Bl[i][x]];
}
bool satisfactie(int x)
{
for(int i = 0 ; i < rel[x].size() ; i++)
switch(Bl[rel[x][i]][0])
{
case 0:
if(!val[Bl[rel[x][i]][1]] && !val[Bl[rel[x][i]][2]])
{
int al = rand() % 2 + 1;
val[Bl[rel[x][i]][al]] = !val[Bl[rel[x][i]][al]];
return Bl[rel[x][i]][al];
}
case 1:
if(!val[Bl[rel[x][i]][1]] && val[Bl[rel[x][i]][2]])
{
int al = rand() % 2 + 1;
val[Bl[rel[x][i]][al]] = !val[Bl[rel[x][i]][al]];
return Bl[rel[x][i]][al];
}
case 2:
if(val[Bl[rel[x][i]][1]] && !val[Bl[rel[x][i]][2]])
{
int al = rand() % 2 + 1;
val[Bl[rel[x][i]][al]] = !val[Bl[rel[x][i]][al]];
return Bl[rel[x][i]][al];
}
case 3:
if(val[Bl[rel[x][i]][1]] && val[Bl[rel[x][i]][2]])
{
int al = rand() % 2 + 1;
val[Bl[rel[x][i]][al]] = !val[Bl[rel[x][i]][al]];
return Bl[rel[x][i]][al];
}
}
return 0;
}
void scriere()
{
int NR = 0;
for(int i = 1 ; i <= N ; i++)
if(val[i])
NR++;
printf("%d\n", NR);
for(int i = 1 ; i <= N ; i++)
if(val[i])
printf("%d\n", val[i]);
}
int main()
{
freopen("party.in", "r", stdin);
freopen("party.out", "w", stdout);
citire();
srand(time(NULL));
int x = 1, k;
while(x)
{
k = satisfactie(x);
x = k;
}
scriere();
return 0;
}