Pagini recente » Cod sursa (job #705456) | Borderou de evaluare (job #2021000) | Cod sursa (job #2622871) | learnhouse_10 | Cod sursa (job #949348)
Cod sursa(job #949348)
#include <stdio.h>
using namespace std;
FILE *fcin=fopen("honest.in","r");
FILE *fcout=fopen("honest.out","w");
struct node
{
int nr;
int h;
node *next;
}*v[1001];
bool pred[1001]; int q[1001];
int honest[1001];
int c,i,n,s,x;
void result ()
{
if (c>=0) for (i=1;i<=n;i++) {fprintf(fcout,"%d\n",(honest[i]+1)/2);}
else for (i=1;i<=n;i++) {fprintf(fcout,"%d\n",1-(honest[i]+1)/2);}
}
int main ()
{
char h;
node *d;
fscanf(fcin,"%d %d",&n,&s);
for (i=1;i<=s;i++)
{
d=new node;
fscanf(fcin,"%d %c %d",&x,&h,&d->nr);
d->next=v[x];
v[x]=d;
if (h=='c') d->h=1;
else d->h=-1;
pred[d->nr]=1;
}
int p,u; p=1; u=1;
for (i=1;i<=n;i++) if (pred[i]==0) {q[u]=i;break;}
honest[q[p]]=1; c=1;
while (1)
{
for (d=v[q[p]];d!=NULL;d=d->next)
{
if (honest[d->nr]==0)
{
q[++u]=d->nr;
honest [d->nr]=honest[q[p]]*d->h;
c=c+honest[d->nr];
if (u==n) {result(); return 0;}
}
}
p++;
}
}