#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> grafo;
vector<bool> vis;
int cont=0;
int n,q;
void dfs(int nodo)
{
for(int i=0;i<grafo[nodo].size();i++)
{
int u=grafo[nodo][i];
if(grafo[nodo][i+1]<=n) {
for(int j=i+1;j<grafo[nodo].size();j++){
int v=grafo[nodo][j];
if(u<v && find(grafo[u].begin(),grafo[u].end(),v)==grafo[u].end()){
grafo[u].push_back(v);
cont++;
}
}
if(!vis[i])dfs(grafo[nodo][i]);
}
}
}
void solve(){
int a,b;
cin>>n>>q;
grafo.assign(n+1,vector<int> ());
vis.assign(n+1,false);
while(q--)
{
cin>>a>>b;
grafo[a].push_back(b);
cont++;
}
for(int i=1;i<=n;i++)
{
sort(grafo[i].begin(),grafo[i].end());
if(!vis[i]) dfs(i),vis[i]=true;
}
cout<<cont;
}
int main()
{
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |