Pagini recente » Cod sursa (job #79417) | Cod sursa (job #3163978) | Cod sursa (job #1964709) | Cod sursa (job #36773) | Cod sursa (job #301325)
Cod sursa(job #301325)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define DIMN 105
#define DIMM 1005
int a[DIMM][2],viz[DIMN];
int n,m,nrt;
void read ()
{
int i,x,y,op;
scanf ("%d%d",&n,&m);
for (i=1; i<=m; ++i)
{
scanf ("%d%d%d",&x,&y,&op);
if (!op)
{
a[i][0]=x;
a[i][1]=y;
}
else if (op==1)
{
a[i][0]=x;
a[i][1]=-y;
}
else if (op==2)
{
a[i][0]=-x;
a[i][1]=y;
}
else if (op == 3)
{
a[i][0]=-x;
a[i][1]=-y;
}
}
}
void solve ()
{
int i,ok,x,y,op;
memset (viz,1,sizeof (viz));
for (ok=1; ok; )
{
ok=0;
for (i=1; i<=m; ++i)
{
if (a[i][0]>0)
x=viz[a[i][0]];
else
x=!viz[-a[i][0]];
if (a[i][1]>0)
y=viz[a[i][1]];
else
y=!viz[-a[i][1]];
if (!x && !y)
{
op = rand();
if (op%2==0)
{
x=a[i][0];
if (x<0)
x=-x;
viz[x]^=1;
}
else
{
y=a[i][1];
if (y<0)
y=-y;
viz[y]^=1;
}
ok=1;
}
}
}
for (i=1; i<=n; ++i)
if (viz[i])
++nrt;
}
void print ()
{
int i;
printf ("%d\n",nrt);
for (i=1; i<=n; ++i)
if (viz[i])
printf ("%d\n",i);
}
int main ()
{
freopen ("party.in","r",stdin);
freopen ("party.out","w",stdout);
srand (time (0));
read ();
solve ();
print ();
return 0;
}