Submission #1241082

#TimeUsernameProblemLanguageResultExecution timeMemory
1241082woeCircle Passing (EGOI24_circlepassing)C++20
0 / 100
8 ms580 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int bfs(int start, int end, const vector<vector<int>>& adj_list, int n) {
    vector<int> visited(n + 1, -1);
    queue<int> q;
    visited[start] = 0;
    q.push(start);

    while (!q.empty()) {
        int current = q.front();
        q.pop();
        
        for (int neighbor : adj_list[current]) {
            if (visited[neighbor] == -1) {
                visited[neighbor] = visited[current] + 1;
                if (neighbor == end) {
                    return visited[neighbor];
                }
                q.push(neighbor);
            }
        }
    }
    return -1;
}

vector<int> solve_circle_passing(int n, int m, const vector<pair<int, int>>& best_friend_pairs, const vector<pair<int, int>>& games) {
    vector<vector<int>> adj_list(n + 1);
    
    for (int i = 1; i <= n; ++i) {
        adj_list[i].push_back(i % n + 1);
        adj_list[i % n + 1].push_back(i);
    }

    for (const auto& pair : best_friend_pairs) {
        adj_list[pair.first].push_back(pair.second);
        adj_list[pair.second].push_back(pair.first);
    }

    vector<int> results;
    for (const auto& game : games) {
        results.push_back(bfs(game.first, game.second, adj_list, n));
    }

    return results;
}

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    
    vector<pair<int, int>> best_friend_pairs(m);
    for (int i = 0; i < m; ++i) {
        cin >> best_friend_pairs[i].first >> best_friend_pairs[i].second;
    }

    vector<pair<int, int>> games(k);
    for (int i = 0; i < k; ++i) {
        cin >> games[i].first >> games[i].second;
    }

    vector<int> results = solve_circle_passing(n, m, best_friend_pairs, games);
    for (int result : results) {
        cout << result << endl;
    }

    return 0;
}
#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...