Submission #1317482

#TimeUsernameProblemLanguageResultExecution timeMemory
1317482benedict0724Board Game (JOI24_boardgame)C++20
3 / 100
17 ms3980 KiB
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <iomanip>

using namespace std;
typedef long long ll;

vector<int> adj[50002];
int x[50002];
int n, m, k;

vector<int> shortest_path(int s, vector<int> dont) {
    queue<int> q;
    vector<int> d(n);
    q.push(s);
    for(int i=0;i<n;i++) d[i] = n;
    d[s] = 0;
    
    while(!q.empty()) {
        int now = q.front(); q.pop();
        for(int nxt : adj[now]) {
            if(dont[nxt]) continue;
            if(d[nxt] <= d[now] + 1) continue;
            d[nxt] = d[now] + 1;
            q.push(nxt);
        }
    }
    
    return d;
}

int main() {
    ios::sync_with_stdio(false); cin.tie(NULL);
    
    cin >> n >> m >> k;
    for(int i=0;i<m;i++) {
        int u, v; cin >> u >> v;
        --u;
        --v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    
    string s; cin >> s;
    for(int i=0;i<k;i++) {
        cin >> x[i];
        --x[i];
    }
    
    vector<int> dont(n, 0);
    vector<int> dir = shortest_path(x[0], dont);
    
    for(int i=0;i<n;i++) cout << dir[i] << "\n";
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...