Submission #1180850

#TimeUsernameProblemLanguageResultExecution timeMemory
1180850gabyferaqMarshmallow Molecules (CCO19_day2problem2)C++20
0 / 25
4094 ms3832 KiB
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> grafo;
vector<bool> vis;
int cont=0;
int n,q;
void dfs(int nodo)
{
    if(!vis[nodo]){
    //vis[nodo]=true;
    for(int i=0;i<grafo[nodo].size();i++)
    {
        if(grafo[nodo][i+1]<=n) {
                for(int j=i+1;j<grafo[nodo].size();j++){
                        if(grafo[nodo][i]<grafo[nodo][j]&&find(grafo[grafo[nodo][i]].begin(),grafo[grafo[nodo][i]].end(),grafo[nodo][j])==grafo[grafo[nodo][i]].end()){
            grafo[grafo[nodo][i]].push_back(grafo[nodo][j]);
            cont++;
            }}
            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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...