Pagini recente » Cod sursa (job #1468114) | Cod sursa (job #2099778) | Cod sursa (job #1211692) | Cod sursa (job #2130642) | Cod sursa (job #986831)
Cod sursa(job #986831)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("triplete.in");
ofstream g("triplete.out");
int n,m;
const int p1=9901,p2=11617,mod=13831;
vector <int> fr[5000];
vector<int> fr1[mod];
vector<int> fr2[mod];
void Add(int x,int y)
{ int lin=(x*p1+y*p2)%mod;
fr1[lin].push_back(x);
fr2[lin].push_back(y);
}
int Found(int x,int y)
{ int lin=(x*p1+y*p2)%mod,i;
for(i=0;i<fr1[lin].size();i++)
if (x==fr1[lin][i] && y==fr2[lin][i]) return 1;
return 0;
}
void Read()
{ int i,friend1,friend2;
f>>n>>m;
for(i=1;i<=m;i++)
{ f>>friend1>>friend2;
if (friend1>friend2) swap(friend1,friend2);
fr[friend1].push_back(friend2);
Add(friend1,friend2);
}
}
void Solve()
{ int i,j,k,f1,f2,sol=0;
for(i=1;i<=n;i++)
{
for(j=0;j<fr[i].size();j++)
for(k=j+1;k<fr[i].size();k++)
{ f1=fr[i][j]; f2=fr[i][k];
if (f1>f2) swap(f1,f2);
if (Found(f1,f2)) sol++;
}
}
g<<sol;
}
int main()
{ Read();
Solve();
return 0;
}