Submission #310175

#TimeUsernameProblemLanguageResultExecution timeMemory
310175ChungFongTraffic (IOI10_traffic)C++11
100 / 100
1260 ms157048 KiB
#include "traffic.h"
#include <bits/stdc++.h>

using namespace std;
const int MX = 1e6;

int totalFans = 0;

vector<int> roads[MX] ;
int cityFans[MX] ;
int congestionOfCity[MX] ;
int accFans2City[MX];

void dfs (int node, int parent) {

    int maxFansFromARoad ;

    for (auto child: roads[node]) {
        if (child == parent) continue;
        
        dfs(child, node);
        
        maxFansFromARoad = max(maxFansFromARoad , accFans2City[child]);
        
        accFans2City[node] += accFans2City[child];        
    }

    int theOther = totalFans - accFans2City[node] - cityFans[node] ;// the total fans from the other side
    congestionOfCity[node] = max(maxFansFromARoad, theOther);

    accFans2City[node] += cityFans[node];
}

int LocateCentre (int n, int p[], int d[], int s[]) {
    for (int i = 0; i < n; i++) {
        totalFans += p[i];
        cityFans[i] = p[i];
    }

    for (int i = 0; i < n - 1; i++) {
        roads[s[i]].push_back(d[i]);
        roads[d[i]].push_back(s[i]);
    }

    dfs(0, -1);
    
    // find the min-congestion city
    int minIdx = 0 ;
    for (int i=1 ; i<n ; ++i ) {
        if ( congestionOfCity[i] < congestionOfCity[minIdx]) {
            minIdx = i;
        }
    }

    return minIdx;
}

Compilation message (stderr)

traffic.cpp: In function 'void dfs(int, int)':
traffic.cpp:16:9: warning: 'maxFansFromARoad' may be used uninitialized in this function [-Wmaybe-uninitialized]
   16 |     int maxFansFromARoad ;
      |         ^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...