제출 #162765

#제출 시각아이디문제언어결과실행 시간메모리
162765_qVp_Mag (COCI16_mag)C++14
24 / 120
569 ms90432 KiB
#include <bits/stdc++.h>

using namespace std;

const int md = 1e6 + 10;

vector < int > adj[md];
int d[md], f[md], a[md], u[md], v[md];
queue < int > q;
int n;

int bfs(int s) {
    d[s] = 1;
    q.push(s);
    int u = 0;
    while (q.size()) {
        u = q.front(); q.pop();
        for(int i = 0; i < adj[u].size(); i++) {
            int v = adj[u][i];
            if (d[v] > 0)
                continue;
            d[v] = d[u] + 1;
            q.push(v);
        }
    }
    //cout << u << endl;
    f[u] = 1;
    q.push(u);
    while (q.size()) {
        u = q.front(); q.pop();
        for(int i = 0; i < adj[u].size(); i++) {
            int v = adj[u][i];
            if (f[v] > 0)
                continue;
            f[v] = f[u] + 1;
            q.push(v);
        }
    }
    return f[u];
}

int main() {
    //freopen("test.in", "r", stdin);
    ios_base::sync_with_stdio(0);
    cin >> n;
    for(int i = 1; i < n; i++)
        cin >> u[i] >> v[i];
    for(int i = 1; i <= n; i++)
        cin >> a[i];
    for(int i = 1; i < n; i++) {
        //int u, v;
        //cin >> u >> v;
        if (a[u[i]] == 1 && a[v[i]] == 1) {
            adj[u[i]].push_back(v[i]);
            adj[v[i]].push_back(u[i]);
        }        
    }
    long long a1 = 1e9 + 10, b1 = 1;
    for(int i = 1; i <= n; i++) {
        if (d[i] > 0) continue;
        long long b2 = bfs(i);
    //    cout << i << " " << a[i] << " " << b2 << endl; 
        if (a1 * b2 >= b1 * a[i]) {
            a1 = a[i];
            b1 = b2;
        }
    }
    cout << a1 << "/" << b1;
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

mag.cpp: In function 'int bfs(int)':
mag.cpp:18:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 0; i < adj[u].size(); i++) {
                        ~~^~~~~~~~~~~~~~~
mag.cpp:31:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 0; i < adj[u].size(); i++) {
                        ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...