Cod sursa(job #2279147)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 8 noiembrie 2018 22:51:40
Problema Triplete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#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;
}