Cod sursa(job #249492)
| Utilizator | Data | 28 ianuarie 2009 16:43:15 | |
|---|---|---|---|
| Problema | Balanta | Scor | 0 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 6.64 kb |
#include <stdio.h>
#include <string.h>
#define Nmax 1035
int A[Nmax],B[Nmax],i,ok,N,M,K,r,j,S[Nmax],D[Nmax],frecv1[Nmax],nr,frecv2[Nmax];
int main()
{
freopen("balanta.in","r",stdin);
scanf("%d %d", &N,&M);
freopen("balanta.out","w",stdout);
for (i=1;i<=N;++i)
{
S[i]=i;
D[i]=i;
}
while (M--)
{
scanf("%d",&K);
for (j=1;j<=K;++j)
scanf("%d", &A[j]);
for (j=1;j<=K;++j)
scanf("%d", &B[j]);
scanf("%d", &r);
if (r==0)
{
/*memset(frecv1,0,sizeof(frecv1));
memset(frecv2,0,sizeof(frecv2));*/
for (i=1;i<=N;++i)
{
if (S[i]!=0) frecv1[i]=1;
else frecv1[i]=0;
if (D[i]!=0) frecv2[i]=1;
else frecv2[i]=0;
}
for (j=1;j<=K;++j)
{
frecv1[A[j]]++;
frecv2[B[j]]++;
frecv1[B[j]]++;
frecv2[A[j]]++;
}
for (j=1;j<=N;++j)
{
if (frecv1[j]>1)
frecv1[j]=0;
if (frecv2[j]>1)
frecv2[j]=0;
}
for (j=1;j<=N;++j)
{
if (frecv1[j]!=0)
S[j]=j;
else S[j]=0;
}
for (j=1;j<=N;++j)
{
if (frecv2[j]!=0)
D[j]=j;
else D[j]=0;
}
/* for (i=1;i<=N;++i)
printf("%d ", S[i]);
printf("\n");
for (i=1;i<=N;++i)
printf("%d ", D[i]);
printf("\n"); */
}
else
if (r==1)
{
/*memset(frecv1,0,sizeof(frecv1));
memset(frecv2,0,sizeof(frecv2));*/
for (i=1;i<=N;++i)
{
if (S[i]!=0) frecv1[i]=1;
else frecv1[i]=0;
if (D[i]!=0) frecv2[i]=1;
else frecv2[i]=0;
}
for (j=1;j<=K;++j)
{
frecv1[A[j]]++;
frecv2[B[j]]++;
}
for (j=1;j<=N;++j)
if (frecv1[j]<=1)
frecv1[j]=0;
for (j=1;j<=N;++j)
if (frecv2[j]<=1)
frecv2[j]=0;
for (j=1;j<=N;++j)
{
if (frecv1[j]!=0)
S[j]=j;
else S[j]=0;
}
for (j=1;j<=N;++j)
{
if (frecv2[j]!=0)
D[j]=j;
else D[j]=0;
}
/* for (i=1;i<=N;++i)
printf("%d ", S[i]);
printf("\n");
for (i=1;i<=N;++i)
printf("%d ", D[i]);
printf("\n");*/
/* for (i=1;i<=N;++i)
printf("%d ", frecv1[i]);
printf("\n");
for (i=1;i<=N;++i)
printf("%d ", frecv2[i]);
printf("\n");*/
}
else
if (r==2)
{
for (i=1;i<=N;++i)
{
if (S[i]!=0) frecv1[i]=1;
else frecv1[i]=0;
if (D[i]!=0) frecv2[i]=1;
else frecv2[i]=0;
}
for (j=1;j<=K;++j)
{
frecv2[A[j]]++;
frecv1[B[j]]++;
}
for (j=1;j<=N;++j)
if (frecv1[j]<=1)
frecv1[j]=0;
for (j=1;j<=N;++j)
if (frecv2[j]<=1)
frecv2[j]=0;
for (j=1;j<=N;++j)
{
if (frecv2[j]!=0)
S[j]=j;
else S[j]=0;
}
for (j=1;j<=N;++j)
{
if (frecv1[j]!=0)
D[j]=j;
else D[j]=0;
}
/* for (i=1;i<=N;++i)
printf("%d ", S[i]);
printf("\n");
for (i=1;i<=N;++i)
printf("%d ", D[i]);
printf("\n");*/
/* for (i=1;i<=N;++i)
printf("%d ", frecv1[i]);
printf("\n");
for (i=1;i<=N;++i)
printf("%d ", frecv2[i]);
printf("\n");*/
}
}
ok=1;
for (i=1;i<=N;++i)
{
if (S[i]!=0)
{
ok=0;
printf("%d ", i);
break;
}
}
if (ok)
for (i=1;i<=N;++i)
{
if (D[i]!=0)
{
ok=0;
printf("%d ", i);
break;
}
}
if (ok) printf("0");
return 0;
}
