Cod sursa(job #1745073)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 21 august 2016 08:22:00
Problema Party Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <stdio.h>

int v1[1001],v2[1001],v3[1001];
int a[101],ok=0;
void funct(int i,int j)
{
    if (a[i]==0 && a[j]==0)
    {
        a[i]=a[j]=1;
        ok=0;
    }
}
void funct2(int i,int j)
{
    if (a[i]==0 && a[j]!=0)
    {
        a[j]=0;
        ok=0;
    }
}
void funct3(int i,int j)
{
    if (a[j]==0 && a[i]!=0)
    {
        a[i]=0;
        ok=0;
    }
}
void funct4(int i,int j)
{
    if (a[i]!=0 && a[j]!=0)
    {
        a[j]=0;
        ok=0;
    }
}
void functie_partajare(int n, int m)
{
    int i;
    for (i=1; i<=m; i++)
        switch (v3[i])
        {
        case 0:
            funct(v1[i],v2[i]);
            break;
        case 1:
            funct2(v1[i],v2[i]);
            break;
        case 2:
            funct3(v1[i],v2[i]);
            break;
        case 3:
            funct4(v1[i],v2[i]);
            break;
        }


}
int main()
{
    FILE *fin,*fout;
    fin=fopen("party.in","r");
    fout=fopen("party.out","w");

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



    while (!feof(fin))
    {
        fscanf(fin,"%d %d %d",&v1[i],&v2[i],&v3[i]);
        i++;
    }

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

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

    return 0;
}