Submission #351294

# Submission time Handle Problem Language Result Execution time Memory
351294 2021-01-19T21:40:57 Z SavicS Traffic (IOI10_traffic) C++14
0 / 100
15 ms 23788 KB
#include "traffic.h"

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <bits/stdc++.h>

#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define ff(i,a,b) for(int i=a;i<=b;i++)
#define fb(i,b,a) for(int i=b;i>=a;i--)

using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 1000005;
const int inf = 1e9 + 5;

template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

// os.order_of_key(k) the number of elements in the os less than k
// *os.find_by_order(k)  print the k-th smallest number in os(0-based)

int n;
int niz[maxn];

vector<int> g[maxn];

int res[maxn];
int cnt[maxn];
void dfs(int v, int p){
    cnt[v] = niz[v];
    int najv = 0;
    for(auto u : g[v]){
        if(u != p){
            dfs(u, v);
            cnt[v] += cnt[u];
            najv = max(najv, cnt[u]);
        }
    }
    res[v] = najv;
}

int LocateCentre(int N, int P[], int S[], int D[]){
    n = N;
    ff(i,1,n)niz[i] = P[i - 1];
    ff(i,0,n - 2){
        int u = S[i] + 1;
        int v = D[i] + 1;
        g[u].pb(v);
        g[v].pb(u);
    }
    dfs(1, -1);
    ff(i,2,n)res[i] = max(res[i], cnt[1] - cnt[i]);
    int rez = inf;
    ff(i,1,n)rez = min(rez, res[i]);
    return rez;
}

//int main()
//{
//    ios::sync_with_stdio(false);
//    cout.tie(nullptr);
//    cin.tie(nullptr);
//    cin >> n;
//    ff(i,1,n)cin >> niz[i];
//    ff(i,1,n - 1){
//        int u, v;
//        cin >> u >> v;
//        g[u].pb(v);
//        g[v].pb(u);
//    }
//    dfs(1, -1);
//    ff(i,1,n)cout << cnt[i] << " ";
//    cout << endl;
//    ff(i,2,n)res[i] = max(res[i], cnt[1] - cnt[i]);
//    int rez = inf;
//    ff(i,1,n)rez = min(rez, res[i]);
//    cout << rez << endl;
//    return 0;
//}
/**

5
10 10 10 20 20
1 3
3 2
3 4
4 5

// probati bojenje sahovski ili slicno

**/
# Verdict Execution time Memory Grader output
1 Correct 15 ms 23788 KB Output is correct
2 Incorrect 15 ms 23788 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 15 ms 23788 KB Output is correct
2 Incorrect 15 ms 23788 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 15 ms 23788 KB Output is correct
2 Incorrect 15 ms 23788 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 15 ms 23788 KB Output is correct
2 Incorrect 15 ms 23788 KB Output isn't correct
3 Halted 0 ms 0 KB -