Submission #1151175

#TimeUsernameProblemLanguageResultExecution timeMemory
1151175vladiliusStar Trek (CEOI20_startrek)C++20
8 / 100
1095 ms776 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define pb push_back
#define ff first
#define ss second
const int mod = 1e9 + 7;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int n; ll d; cin>>n>>d;
    vector<int> g[n + 1];
    vector<pii> ed;
    for (int i = 1; i < n; i++){
        int u, v; cin>>u>>v;
        g[u].pb(v);
        g[v].pb(u);
        ed.pb({u, v});
    }
    
    vector<int> G[2 * n + 1];
    vector<bool> f(2 * n + 1);
    function<void(int, int)> dfs = [&](int v, int pr){
        f[v] = 1;
        for (int i: G[v]){
            if (i == pr) continue;
            dfs(i, v);
            f[v] = min(f[v], f[i]);
        }
        f[v] = !f[v];
    };
    
    ll out = 0;
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++){
            for (int t = 1; t <= 2 * n; t++){
                G[t].clear();
            }
            for (auto [x, y]: ed){
                G[x].pb(y);
                G[y].pb(x);
                G[n + x].pb(n + y);
                G[n + y].pb(n + x);
            }
            G[i].pb(j + n);
            G[j + n].pb(i);
            dfs(1, 0);
            out += f[1];
        }
    }
    out %= mod;
    cout<<out<<"\n";
}
#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...