Pagini recente » Cod sursa (job #954703) | Cod sursa (job #223412) | Cod sursa (job #1457529) | Cod sursa (job #3198218) | Cod sursa (job #1388678)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin ("triplete.in");
ofstream fout ("triplete.out");
int N, M, sol;
vector < int > V[4100];
bool Caut_Binar(int l, int val)
{
int st = 0, dr = V[l].size() - 1, mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if (V[l][mij] < val) st = mij + 1;
else if (V[l][mij] > val) dr = mij - 1;
else return 1;
}
return 0;
}
int main()
{
fin >> N >> M;
for (int x, y, i = 1; i <= M; i++)
{
fin >> x >> y;
if (x > y) swap(x, y);
V[x].push_back(y);
}
for (int i = 1; i <= N; i++)
{
sort (V[i].begin(), V[i].end());
}
for (int i = 1; i <= N; i++)
{
for (int j = 0; j < V[i].size(); j++)
{
for (int k = j + 1; k < V[i].size(); k++)
{
if (Caut_Binar(V[i][j], V[i][k])) sol += 1;
}
}
}
fout << sol << '\n';
fout.close();
return 0;
}