Cod sursa(job #249492)

Utilizator AndreiDDiaconeasa Andrei AndreiD 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;
}