Pagini recente » Cod sursa (job #1683554) | Cod sursa (job #2436302) | Cod sursa (job #2732244) | Cod sursa (job #2412437) | Cod sursa (job #7053)
Cod sursa(job #7053)
/*
*
*
Info-Arena, preONI 2007 - Runda I - Triplete
*
*
*/
#include<stdio.h>
#define INPUT "triplete.in"
#define OUTPUT "triplete.out"
FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");
typedef struct elem
{
int val;
struct elem *urm;
};
typedef elem *reper;
int n,a,b,vec[65538][2];
long m;
reper adiacenta[4100];
void citire();
void rezolvare();
int main()
{
citire();
rezolvare();
fclose(fin);
fclose(fout);
return 0;
}
void citire()
{
reper adr;
fscanf(fin, "%d %ld", &n, &m);
for(long i=1;i<=m;++i)
{
fscanf(fin, "%d %d", &a, &b);
if(a>b)
{
a=a+b;
b=a-b;
a=a-b;
}
vec[i][1]=a;
vec[i][2]=b;
adr=new elem;
adr->urm=adiacenta[a];
adr->val=b;
adiacenta[a]=adr;
}
}
void rezolvare()
{
long long k=0;
int l=0;
reper adr,adr2;
for(long i=1;i<=m;++i)
{
adr=adiacenta[vec[i][1]];
while(adr!=NULL)
{
if(adr->val>vec[i][2])
{
adr2=adiacenta[vec[i][2]];
l=0;
while(adr2!=NULL&&!l)
{
if(adr->val==adr2->val)
{
l=1;
++k;
}
adr2=adr2->urm;
}
}
adr=adr->urm;
}
}
fprintf(fout, "%lld\n", k);
/* delete adr;
delete adr2;
delete [] adiacenta;*/
}