Cod sursa(job #1733115)

Utilizator LDPalcuPalcu Daniela LDPalcu Data 23 iulie 2016 17:12:14
Problema Party Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <stdio.h>
#include <stdlib.h>
int x[1001],y[1001],z[1001];
int p[101],ok=0;
void f1(int i,int j)
{
   if (p[i]==0 && p[j]==0)
   {p[i]=p[j]=1;
   ok=0;
   }
}
void f2(int i,int j)
{
    if (p[i]==0 && p[j]!=0)
      {p[j]=0;
        ok=0;
        }
}
void f3(int i,int j)
{
    if (p[j]==0 && p[i]!=0)
    {
    p[i]=0;
    ok=0;
    }
}
void f4(int i,int j)
{
    if (p[i]!=0 && p[j]!=0)
    {p[j]=0;
    ok=0;
    }
}
void part(int n, int m)
{
    int i;
    for (i=1; i<=m; i++)
        switch (z[i])
        {case 0:f1(x[i],y[i]);break;
         case 1:f2(x[i],y[i]);break;
         case 2:f3(x[i],y[i]);break;
         case 3:f4(x[i],y[i]);break;
        }


}
int main()
{
    FILE *pf,*pg;
    pf=fopen("party.in.txt","r");
    pg=fopen("party.out.txt","w");

    int n,m,i=1,k=0;
    fscanf(pf,"%d %d",&n,&m);



    while (!feof(pf))
    {
        fscanf(pf,"%d %d %d",&x[i],&y[i],&z[i]);
        //printf("%d %d %d\n",x[i],y[i],z[i]);
        i++;
    }

    for (i=1; i<=n; i++)
        p[i]=1;

    while(!ok)
    {ok=1;
    part(n,m);
    }
    for (i=1; i<=n; i++)
       {if (p[i]) k++;
        }
    fprintf(pg,"%d",k);
    fprintf(pg,"\n");
    for (i=1; i<=n; i++)
        {if (p[i])
            fprintf(pg,"%d",i);
        fprintf(pg,"\n");}

    return 0;
}