Submission #1359454

#TimeUsernameProblemLanguageResultExecution timeMemory
1359454opeleklanosThousands Islands (IOI22_islands)C++20
0 / 100
1 ms580 KiB
#include <iostream>
#include <vector>
#include <variant>
#include <algorithm>
using namespace std;

vector<vector<pair<int, int>>> adj;
vector<int> path;

vector<int> vis;
vector<int> tpsort;



void dfs(int st){
    vis[st] = 1;
    for(auto c : adj[st]) if(!vis[c.first]) dfs(c.first);

    tpsort.push_back(st);
}

bool find_journey(int N, int M, vector<int> U, vector<int> V){

    adj.assign(N, {});
    vis.assign(N, 0);

    for(int i = 0; i<M; i+=2){
        adj[U[i]].push_back({V[i], i});
    }

    dfs(0);

    reverse(tpsort.begin(), tpsort.end());
    vector<int> indx(N, -1);
    for(int i = 0; i<N; i++) indx[tpsort[i]] = i;

    for(int i = 0; i<N; i++){
        if(!vis[i]) continue;
        for(auto j : adj[i]){
            if(indx[i] > indx[j.first]) return (bool)1;
        }
    }

    return (bool)0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...