답안 #919121

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
919121 2024-01-31T10:31:40 Z velislavgarkov 통행료 (IOI18_highway) C++14
5 / 100
109 ms 8468 KB
#include "highway.h"
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
const int MAXN=1e5+10;
vector <pair <int,int> > v[MAXN], dist;
vector <int> w;
bool used[MAXN];
int edge;
long long a, b, path;
int n;
void find_tree(int x) {
    used[x]=true;
    for (auto i:v[x]) {
        if (i.second==edge) continue;
        if (used[i.first]) continue;
        w[i.second]=1;
        find_tree(i.first);
    }
}
void dfs(int x, int d) {
    used[x]=true;
    for (auto i:v[x]) {
        if (i.second==edge) continue;
        if (used[i.first]) continue;
        if (d==1) {
            dist.push_back(i);
            continue;
        }
        dfs(i.first,d-1);
    }
}
int find_one(int start) {
    for (int i=0;i<n-1;i++) w[i]=0;
    memset(used,false,sizeof(used));
    find_tree(start);
    long long d=(ask(w)-path)/(b-a);
    if (d==0) return start;
    if (!dist.empty()) dist.clear();
    memset(used,false,sizeof(used));
    dfs(start,d);
    int l, r, mid;
    l=0; r=dist.size()-1;
    while (l<r) {
        mid=(l+r)/2;
        for (int i=0;i<n-1;i++) w[i]=0;
        for (int i=l;i<=mid;i++) w[dist[i].second]=1;
        int cur=ask(w);
        if (cur==path) l=mid+1;
        else r=mid;
    }
    return dist[l].first;
}
void find_pair (int N, vector <int> U, vector <int> V, int A, int B) {
    n=N; a=A; b=B;
    w.resize(n-1);
    for (int i=0;i<U.size();i++) {
        v[U[i]].push_back({V[i],i});
        v[V[i]].push_back({U[i],i});
    }
    for (int i=0;i<n-1;i++) w[i]=0;
    path=ask(w);
    //cout << path << endl;
    edge=-1;
    int ans1, ans2;
    /*
    int l, r, mid;
    l=0; r=n-1;
    while (l<r) {
        mid=(l+r)/2;
        for (int i=0;i<n-1;i++) w[i]=0;
        for (int i=l;i<=mid;i++) w[i]=1;
        int cur=ask(w);
        if (cur==path) l=mid+1;
        else r=mid;
    }
    edge=l;
    //cout << U[edge] << ' ' << V[edge] << endl;
    ans1=find_one(U[edge]);
    ans2=find_one(V[edge]);*/
    ans1=0;
    ans2=find_one(0);
    answer(ans1,ans2);    
}

Compilation message

highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:58:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |     for (int i=0;i<U.size();i++) {
      |                  ~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2800 KB Output is correct
2 Correct 1 ms 2796 KB Output is correct
3 Correct 1 ms 2956 KB Output is correct
4 Correct 1 ms 2800 KB Output is correct
5 Correct 1 ms 2800 KB Output is correct
6 Correct 1 ms 2796 KB Output is correct
7 Correct 1 ms 2804 KB Output is correct
8 Correct 1 ms 2796 KB Output is correct
9 Correct 1 ms 2800 KB Output is correct
10 Correct 1 ms 2792 KB Output is correct
11 Correct 1 ms 2804 KB Output is correct
12 Correct 1 ms 2792 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2852 KB Output is correct
2 Correct 15 ms 3492 KB Output is correct
3 Correct 109 ms 8400 KB Output is correct
4 Correct 75 ms 8208 KB Output is correct
5 Correct 71 ms 8468 KB Output is correct
6 Correct 73 ms 8068 KB Output is correct
7 Correct 69 ms 8128 KB Output is correct
8 Correct 72 ms 8256 KB Output is correct
9 Correct 62 ms 8048 KB Output is correct
10 Correct 79 ms 8216 KB Output is correct
11 Correct 100 ms 8356 KB Output is correct
12 Correct 105 ms 8448 KB Output is correct
13 Correct 75 ms 8208 KB Output is correct
14 Incorrect 82 ms 8248 KB Output is incorrect: {s, t} is wrong.
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 3600 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2848 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 3416 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 3380 KB Incorrect
2 Halted 0 ms 0 KB -