Pagini recente » Cod sursa (job #498730) | Cod sursa (job #298968) | Cod sursa (job #509300) | Cod sursa (job #395963) | Cod sursa (job #2279147)
#include <bits/stdc++.h>
#define Dim 4100
using namespace std;
ifstream f("triplete.in");
ofstream g("triplete.out");
vector < int > Vf[Dim];
int N,M,a,b,ans,Aux[Dim],cnt,ans_loc,maxim;
int in;
bool Mch[Dim][Dim],viz[Dim];
void DFS(int nod)
{
viz[nod]=1;
for(int i=1;i<=cnt;i++)
{
if(Mch[nod][Aux[i]]==1)
{
ans_loc++;
if(!viz[Aux[i]])
DFS(Aux[i]);
}
}
}
int main()
{
f>>N>>M;
for(int i=1;i<=M;i++)
{
f>>a>>b;
Mch[a][b]=1;
Vf[a].push_back(b);
}
for(int i=1;i<=N;i++)
{
cnt=ans_loc=0;
memset(viz,0,sizeof(viz));
for(int j=0;j<Vf[i].size();j++)
{
Aux[++cnt]=Vf[i][j];
if(Vf[Vf[i][j]].size()>maxim)
{
in=Vf[i][j];
maxim=Vf[Vf[i][j]].size();
}
}
DFS(in);
ans+=ans_loc;
}
g<<ans_loc;
return 0;
}