Submission #1183551

#TimeUsernameProblemLanguageResultExecution timeMemory
1183551PagodePaivaThousands Islands (IOI22_islands)C++20
1.75 / 100
18 ms5188 KiB
#include "islands.h"
#include<bits/stdc++.h>
#include <variant>
#include <vector>

using namespace std;

const int N = 1010;
const int M = 400010;
vector <pair <int, int>> g[N];
int mark[M];
bool res = false;

void dfs(int v, int p, int idx){
    mark[idx/2] = 1;
    int cnt = 0;
    for(auto [x, i] : g[v]){
        if(mark[i/2])
            continue;
        cnt++;
        if(cnt > 1){
            res = true;
            return;
        }
    }
    for(auto [x, i] : g[v]){
        if(mark[i/2])
            continue;
        dfs(x, v, i);
    }
    return;
}

std::variant<bool, std::vector<int>> find_journey(
    int N, int M, std::vector<int> U, std::vector<int> V) {
    for(int i = 0;i < M;i++){
        g[U[i]].push_back({V[i], i});

    }  
    vector <int> ans = {};
    if(g[0].size() >= 2){
        return ans;
    }
    dfs(0, 0, M-1);
    if(res) return ans;
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...