제출 #98267

#제출 시각아이디문제언어결과실행 시간메모리
98267dalgerokMag (COCI16_mag)C++17
12 / 120
386 ms37296 KiB
#include<bits/stdc++.h>
using namespace std;



const int N = 1e6 + 5;



int n, p[N], sz[N], a[N];
vector < pair < int, int > > q;

int dsu_get(int v){
    return p[v] == v ? v : p[v] = dsu_get(p[v]);
}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin >> n;
    for(int i = 1; i <= n; i++){
        p[i] = i;
        sz[i] = 1;
    }
    for(int i = 1; i < n; i++){
        int x, y;
        cin >> x >> y;
        q.push_back(make_pair(x, y));
    }
    int ans = -1;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        if(a[i] == 1){
            ans = 1;
        }
    }
    for(auto it : q){
        int x = it.first, y = it.second;
        if(a[x] == 1 && a[y] == 1 && dsu_get(x) != dsu_get(y)){
            sz[dsu_get(y)] += sz[dsu_get(x)];
            ans = max(ans, sz[dsu_get(y)]);
            p[dsu_get(x)] = dsu_get(y);
        }
    }
    if(ans != -1){
        return cout << "1/" << ans, 0;
    }
    ans = 2e9;
    for(int i = 1; i <= n; i++){
        ans = min(ans, a[i]);
    }
    cout << ans << "/1";
}
#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...