Cod sursa(job #325237)
Utilizator | Data | 19 iunie 2009 16:58:34 | |
---|---|---|---|
Problema | Triplete | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.07 kb |
#include<stdio.h>
#include<algorithm>
using namespace std;
struct nod
{ int p[2000];
}a[4100];
int i,j,k,n,m,x,y,p,ok1,ok,rez,mij;
bool b[4100];
int cautbin(int x,int i)
{ int st;
bool ok=0;
for(st=1;st<=a[i].p[0];st++) if(a[i].p[st]==x) return 1;
return 0;
}
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",&x,&y);
a[x].p[++a[x].p[0]]=y;
}
for(i=1;i<=n;i++) { if(a[i].p[0]) for(j=1;j<=a[i].p[0];j++)
if(a[a[i].p[j]].p[0])if(!b[a[i].p[j]])
for(k=1;k<=a[a[i].p[j]].p[0];k++) {ok=0;
if(!b[i]) ok=cautbin(a[a[i].p[j]].p[k],i);
if(!ok) { ok1=0;
if(!b[a[a[i].p[j]].p[k]]) ok1=cautbin(i,a[a[i].p[j]].p[k]);
if(ok1){ rez++;
}
}
else rez++;
}
b[i]=1;
}
printf("%d\n",rez);
fclose(stdin);
fclose(stdout);
return 0;
}