Submission #1199083

#TimeUsernameProblemLanguageResultExecution timeMemory
1199083repsakHighway Tolls (IOI18_highway)C++20
0 / 100
4 ms720 KiB
#include "highway.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;


void dfs(int node, int parent, vector<vector<int>> adj, vector<int>& depths){

    for(int v : adj[node]){
        if(v == parent) return;
        depths[v] = depths[node] + 1;
        dfs(v, node, adj, depths);
    }
}

pair<int, int> search(int N, vector<int> U, vector<int> V, int A, int B){
    int M = U.size();
    vector<int> initial(M, 0);
    ll initialCost = ask(initial);
    int distance = initialCost / A;

    vector<vector<int>> adj;
    for(int i = 0; i < M; i++){
        int u = U[i]; int v = V[i];
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    vector<int> depths(M);
    dfs(0, 0, adj, depths);

    int secondLocation = 0;
    for(int i = 0; i < N; i++){
        if(depths[i] == distance){
            initial[i] = 1;
            ll thisPrice = ask(initial);
            if(thisPrice - B + A == initialCost) return {0, secondLocation};
        }
    }

    return {0, secondLocation};
}

void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) {

  pair<int, int> ans = search(N, U, V, A, B);
  answer(ans.first, ans.second);
  // int A_; cin >> A_;
}

// #include "grader.cpp"
// #include "grader.cpp"

#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...