Submission #1113842

#TimeUsernameProblemLanguageResultExecution timeMemory
1113842AvianshFirefighting (NOI20_firefighting)C++17
0 / 100
130 ms18248 KiB
#include <bits/stdc++.h>

using namespace std;

bool dfs(int st, vector<array<int,2>>(&g)[],int dis, int mas, int k, int p){
    bool work = 1;
    if((1<<st)&mas)
        dis=0;
    for(array<int,2>node : g[st]){
        if(node[0]==p)
            continue;
        work&=dfs(node[0],g,dis+node[1],mas,k,st);
    }
    if(dis>=k){
        return 0;
    }
    return work;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,k;
    cin >> n >> k;
    vector<array<int,2>>g[n];
    bool cas1 = true;
    for(int i = 0;i<n-1;i++){
        int a,b,d;
        cin >> a >> b >> d;
        a--;b--;
        g[a].push_back({b,d});
        g[b].push_back({a,d});
        if(d>=k){
            cas1=0;
        }
    }
    if(cas1){
        cout << n << "\n";
        for(int i = 1;i<=n;i++){
            cout << i << " ";
        }
        return 0;
    }
    return 0;
    if(n<=17){
        int mx=(1<<n)-1;
        for(int mask = 1;mask<(1<<n);mask++){
            for(int i = 0;i<n;i++){
                if(mask&(1<<i)){
                    if(dfs(i,g,0,mask,k,-1)){
                        if(__builtin_popcount(mask)<=__builtin_popcount(mx)){
                            mx=mask;
                        }
                    }
                    break;
                }
            }
        }
        cout << __builtin_popcount(mx) << "\n";
        for(int i = 0;i<n;i++){
            if((1<<i)&mx){
                cout << i+1 << " ";
            }
        }
    }
    return 0;
}
#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...