Cod sursa(job #211668)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 3 octombrie 2008 11:00:00
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
# include <cstdio>

# define MAXN 210
# define MAXL 4100
# define MAXD 1048576
# define MAXK 65540

int N,M,i,j,cont;
int A[MAXL][MAXN];
int a[MAXK],b[MAXK];
unsigned char cnt[MAXD];

    int main()
    {
        freopen("triplete.in","r",stdin);
        freopen("triplete.out","w",stdout);
        
        scanf("%d%d",&N,&M);
        for (i=1; i<=M; ++i)
          {
             scanf("%d%d",&a[i],&b[i]);
             A[a[i]][b[i]/20]|=1<<b[i]%20;
             A[b[i]][a[i]/20]|=1<<a[i]%20; 
          }
          
        for (i=1; i<=MAXD; ++i)
          cnt[i]=cnt[i>>1]+(i&1);
        
        N/=20;
        for (i=1; i<=M; ++i)
          for (j=N; j>=0; --j)
            cont+=cnt[A[a[i]][j]&A[b[i]][j]];
            
        printf("%d",cont/3);
        
        return 0;
    }