Submission #1362256

#TimeUsernameProblemLanguageResultExecution timeMemory
1362256ivazivaHighway Tolls (IOI18_highway)C++20
0 / 100
3 ms584 KiB
#include <bits/stdc++.h>
#include "highway.h"

using namespace std;


#define MAXN 105

int n,m,a,b;
vector<pair<int,int>> adj[MAXN];
pair<int,int> parent[MAXN];

void dfs(int node,int pret,int edge)
{
    parent[node]={pret,edge};
    for (pair<int,int> sled:adj[node])
    {
        if (sled.first!=pret) dfs(sled.first,node,sled.second);
    }
}

void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B)
{
    n=N;m=(int)U.size();a=A;b=B;
    for (int i=0;i<m;i++) {adj[U[i]].push_back({V[i],i});adj[V[i]].push_back({U[i],i});}
    dfs(0,-1,-1);
    if (m==n-1 and n<=100)
    {
        for (int node=1;node<n;node++)
        {
            vector<int> state;for (int i=0;i<m;i++) state.push_back(0);
            int current=node;int number=0;
            while (current!=0) {state[parent[current].second]=1;current=parent[current].first;number++;}
            long long ans=ask(state);
            if (ans==(long long)b*number) {answer(0,node);return;}
        }
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...