답안 #765131

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
765131 2023-06-24T08:32:43 Z vjudge1 Roadside Advertisements (NOI17_roadsideadverts) C++17
7 / 100
41 ms 10172 KB
#include <bits/stdc++.h>
#define ibase ios::sync_with_stdio(false); cin.tie(0);  cout.tie(0)
#define pb push_back
#define ff first
#define int long long
#define ss second
using namespace std;
const int N = 5e4 + 3;
const int MOD = 1e9 + 7;
int a[N], ans[N], pos[N], cnt = 1, was[N], was1[N], used[N];
vector < pair < int, int > > g[N];
void dfs(int v){
    cnt++;
    used[v] = 1;
    for(auto to : g[v]){
        if(!used[to.ff]){
            a[cnt] = to.ss;
            pos[to.ff] = cnt;
            dfs(to.ff);
        }
    }
}
void solve(){
    int n, sum = 0, po;
    cin >> n;
    set < int > s;
    for(int i=1; i<n; i++){
        int x, y, cost;
        po = x;
        cin >> x >> y >> cost;
        was[y] = 1;
        was1[x] = 1;
        s.insert(x);
        s.insert(y);
        sum += cost;
        g[x].pb(make_pair(y, cost));
    }
    int z = -1;
    for(auto to : s){
        if(was[to] == 0){
            pos[to] = 1;
            z = to;
        }
        if(was1[to] == 0){
            pos[to] = s.size();
        }
    }
    if(z == -1) z = po;
    dfs(z);
    for(int i=1; i<=s.size(); i++){
        ans[i] = ans[i - 1] + a[i];
    }
    int q;
    cin >> q;
    while(q--){
        int a, b, c, d, e;
        cin >> a >> b >> c >> d >> e;
        int l, r;
        l = min({pos[a], pos[b], pos[c], pos[d], pos[e]});
        r = max({pos[a], pos[b], pos[c], pos[d], pos[e]});
        cout << ans[r] - ans[l] << endl;
    }
}
signed main() {
    ibase;
    int t = 1;
    //freopen("floor4.in", "r", stdin);
    //freopen("floor4.out", "w", stdout);
    //cin >> t;
    while (t--) {
        solve();
    }
}

Compilation message

roadsideadverts.cpp: In function 'void solve()':
roadsideadverts.cpp:50:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::set<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for(int i=1; i<=s.size(); i++){
      |                  ~^~~~~~~~~~
roadsideadverts.cpp:49:8: warning: 'po' may be used uninitialized in this function [-Wmaybe-uninitialized]
   49 |     dfs(z);
      |     ~~~^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1492 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 10172 KB Output is correct
2 Incorrect 40 ms 6804 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 24 ms 6860 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1492 KB Output is correct
2 Correct 41 ms 10172 KB Output is correct
3 Incorrect 40 ms 6804 KB Output isn't correct
4 Halted 0 ms 0 KB -