Pagini recente » Cod sursa (job #2282947) | Cod sursa (job #1576063) | Cod sursa (job #2298638) | Cod sursa (job #1554312) | Cod sursa (job #48967)
Cod sursa(job #48967)
#include <stdio.h>
#define NM 4097
FILE *fin,*fout;
struct nod { short val;
nod *urm; };
nod *l[NM],*p,*nw,*q;
short i,n,m,x,y;
long long nr;
int main()
{
fin=fopen("triplete.in","rt");
fout=fopen("triplete.out","wt");
fscanf(fin,"%hd %hd",&n,&m);
for (i=1;i<=m;i++)
{ fscanf(fin,"%hd %hd",&x,&y);
p=l[x];
nw = new nod;
nw->val=y;
if (p->val>=nw->val||p==NULL)
{ l[x]=nw;
nw->urm=p;
}
else
{
while (p->urm!=NULL&&p->urm->val<y)
p=p->urm;
nw->urm=p->urm;
p->urm=nw;
}
p=l[y];
nw = new nod;
nw->val=x;
if (p->val>=nw->val||p==NULL)
{ l[y]=nw;
nw->urm=p;
}
else
{
while (p->urm!=NULL&&p->urm->val<x)
p=p->urm;
nw->urm=p->urm;
p->urm=nw;
}
}
rewind(fin);
fscanf(fin,"%hd %hd");
for (i=1;i<=m;i++)
{ fscanf(fin,"%hd %hd",&x,&y);
p=l[x];
q=l[y];
while (q->urm!=NULL)
{ if (q->val==p->val)
nr++;
p=p->urm;
q=q->urm;
}
if (q->val==p->val)
nr++;
}
fprintf(fout,"%lld\n",nr/3);
return 0;
}