Submission #597870

# Submission time Handle Problem Language Result Execution time Memory
597870 2022-07-17T03:10:18 Z yanndev Simurgh (IOI17_simurgh) C++17
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>

const int IDK = 0;
const int NOT_ROYAL = 1;
const int ROYAL = 2;

vector<pair<int, int>> graph[542];
vector<int> back[542];
bool vis[542];
bool dfsTree[4242];
int status[4242];

void dfs(int node, int root, int subId = -1) {
    vis[node] = true;
    for (auto& x: graph[node]) {
        if (vis[x.fi] && x.fi == root)
            back[subId].push_back(x.se);
        int nxtId = subId;
        if (subId == -1)
            nxtId = x.fi;
        dfsTree[x.se] = true;
        dfs(x.fi, root, nxtId);
    }
}

vector<int> find_roads(int n, vector<int> u, vector<int> v) {
    int m = (int)u.size();
    for (int i = 0; i < m; i++) {
        graph[u[i]].push_back({v[i], i});
        graph[v[i]].push_back({u[i], i});
    }

    for (int i = 0; i < n; i++) {
        memset(vis, false, sizeof(vis));
        memset(dfsTree, false, sizeof(vis));
        for (int j = 0; j < n; j++)
            back[j].clear();
        
        dfs(i, i, -1);
        for (auto& x: graph[i]) {
            // x.se a royal edge ???
            if (status[x.se] != IDK)
                continue;

            vector<int> toQ {};
            for (int j = 0; j < m; j++)
                if (dfsTree[j] && j != x.se)
                    toQ.push_back(j);
            toQ.push_back(x.se);
            int orig = count_common_roads(toQ);
            status[x.se] = ROYAL;

            for (auto& y: back[x.fi]) {
                toQ.pop_back();
                toQ.push_back(y);
                int newCnt = count_common_roads(toQ);
                if (newCnt > orig) {
                    status[x.se] = NOT_ROYAL;
                    status[y] = ROYAL;
                }
            }
        }
    }

    vector<int> ans {};
    for (int i = 0; i < m; i++)
        if (status[i] == ROYAL)
            ans.push_back(i);
    return ans;
}

Compilation message

simurgh.cpp:7:1: error: 'vector' does not name a type
    7 | vector<pair<int, int>> graph[542];
      | ^~~~~~
simurgh.cpp:8:1: error: 'vector' does not name a type
    8 | vector<int> back[542];
      | ^~~~~~
simurgh.cpp: In function 'void dfs(int, int, int)':
simurgh.cpp:15:19: error: 'graph' was not declared in this scope; did you mean 'isgraph'?
   15 |     for (auto& x: graph[node]) {
      |                   ^~~~~
      |                   isgraph
simurgh.cpp:17:13: error: 'back' was not declared in this scope
   17 |             back[subId].push_back(x.se);
      |             ^~~~
simurgh.cpp: At global scope:
simurgh.cpp:26:1: error: 'vector' does not name a type
   26 | vector<int> find_roads(int n, vector<int> u, vector<int> v) {
      | ^~~~~~