Cod sursa(job #7249)

Utilizator ViksenVictor-Nicolae Savu Viksen Data 21 ianuarie 2007 13:15:11
Problema Triplete Scor 40
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 0.72 kb
#include <stdio.h>
#include <string.h>

char A[4100][600],V[4100];
int Ap[4100],n,m,x,y,nr,i,j,l,r;

void ReadData()
{
 freopen("triplete.in","r",stdin);
 scanf("%d %d", &n, &m);nr=0;l=0;
 memset(A,0,sizeof(A));
 for (i=0;i<m;i++) {
    scanf("%d %d",&x, &y);
    if (!V[x]) { Ap[l++]=x; V[x]=1;}
    if (!V[y]) { Ap[l++]=y; V[y]=1;}
    A[x][y>>3]|=(1<<(y&7));
    A[y][x>>3]|=(1<<(x&7));
    for (r=0;r<l;r++) {
       j=Ap[r];
       if ((j!=x)&&(j!=y)&&( ( A[x][j>>3]>>(j&7) ) &1 )&&( (A[y][j>>3]>>(j&7) ) &1 ))
          nr++;
    }
 }
 fclose(stdin);
}

void WriteData()
{
 freopen("triplete.out","w",stdout);
 printf("%d\n",nr);
 fclose(stdout);
}

int main()
{
 ReadData();
 WriteData();
}