Submission #1177356

#TimeUsernameProblemLanguageResultExecution timeMemory
1177356qrnCrocodile's Underground City (IOI11_crocodile)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

#define SPEED                     \
    ios_base::sync_with_stdio(0); \
    cin.tie(NULL);                \
    cout.tie(NULL);

#define pb push_back
#define ins insert
#define fi first
#define se second

#define endl "\n"
#define ALL(x) x.begin(), x.end()
#define sz(x) x.size()
#define intt long long

const intt mod = 1e9 + 7;
const intt base = 31;
const intt inf = 1e18;
const intt mxN = 1e6 + 5;
const intt l = 21;

intt R[mxN][2], L[mxN], P[mxN], isexit[mxN], D[mxN], used[mxN], deg[mxN], edeg[mxN], N, M, K;
set<pair<intt,intt>> graph[mxN];

void bfs(intt node) {
    for(intt i = 0; i < N; i++) {
        D[i] = inf;
    }
    
    D[node] = 0;
    queue<intt> q;
    q.push(node);
    while(not q.empty()) {
        intt cur = q.front();
        q.pop();
        if(used[cur]) continue;
        used[cur] = 1;
        
        for(auto g : graph[cur]) {
            intt u = g.fi, w = g.se;
            if(D[u] > D[cur] + w) {
                D[u] = D[cur] + w;
                q.push(u);
            }
        }
    }
}

void solve() {
    cin >> N >> M;
    
    for(intt i = 0; i < M; i++) {
        cin >> R[i][0] >> R[i][1];
        ++deg[R[i][0]]; 
        ++deg[R[i][1]];
    }
    for(intt i = 0; i < M; i++) {
        cin >> L[i];
    }
      
    cin >> K;
    for(intt i = 0; i < K; i++) {
        cin >> P[i];
        isexit[P[i]] = 1;
    }
    
    
    for(intt i = 0; i < M; i++) {
        intt a = R[i][0], b = R[i][1];
        graph[a].insert({b, L[i]});
        graph[b].insert({a, L[i]});
        if(isexit[a]) ++edeg[b];
        if(isexit[b]) ++edeg[a];
    }
    
    vector<intt> temp;
    for(intt i = 0; i < N; i++) {
        intt fl = 0;
        if(isexit[i]) continue;
        for(auto u : graph[i]) {
            if(isexit[u.fi]) {
                fl = 1;
                break;
            }
        }
        if(!fl) temp.pb(i);
    
    }
    
    for(intt node : temp) {
        cout << node << endl;
        for(auto u : graph[node]) {
            graph[u.fi].erase({node, u.se});
        }
    }
    bfs(0);
    
    intt tempp = inf, nod = -1;
    for(intt i = 0; i < N; i++) {
        pair<intt,intt> fif = *graph[i].begin();
        intt nodee = fif.fi;
        if(isexit[i] && !((deg[i] == 1 && edeg[nodee] == 1)) && tempp > D[i]) {
            tempp = min(tempp, D[i]);
            nod = i;
        }
    }

    intt ans = inf; 
    for(intt i = 0; i < N; i++) {
        pair<intt,intt> fif = *graph[i].begin();
        intt nodee = fif.fi;
        if(isexit[i] && !((deg[i] == 1 && edeg[nodee] == 1)) && i != nod) {
            ans = min(ans, D[i]);
        }
    }
    cout << ans << endl;
    
}

signed main() {
    SPEED;
    intt tst = 1;
    // cin >> tst;
    while (tst--) {
        solve();
    }
}



Compilation message (stderr)

/usr/bin/ld: /tmp/ccoHg3Nx.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc4qKurJ.o:crocodile.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccoHg3Nx.o: in function `main':
grader.cpp:(.text.startup+0x36): undefined reference to `travel_plan(int, int, int (*) [2], int*, int, int*)'
collect2: error: ld returned 1 exit status