제출 #1184834

#제출 시각아이디문제언어결과실행 시간메모리
1184834UnforgettableplAmusement Park (CEOI19_amusementpark)C++20
19 / 100
3095 ms436 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int modulo = 998244353;
const int div2 = 499122177;

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;
    cin >> n >> m;
    vector<pair<int,int>> edges;
    for(int i=1;i<=m;i++){
        int a,b;
        cin >> a >> b;
        edges.emplace_back(a,b);
    }
    int ans = 0;
    for(int mask = 0;mask<(1<<m);mask++){
        bool works = true;
        int curr = 0;
        vector<vector<int>> adj(n+1);
        for(int i=0;i<m;i++){
            if(mask&(1<<i))adj[edges[i].first].emplace_back(edges[i].second);
            else {
                adj[edges[i].second].emplace_back(edges[i].first);
                curr++;
            }
        }
        vector<int> visited(n+1);
        function<void(int)> dfs = [&](int x){
            if(visited[x]){
                if(visited[x]==1)works=false;
                return;
            }
            visited[x]=1;
            for(int&i:adj[x])dfs(i);
            visited[x]=2;
        };
        for(int i=1;i<=n;i++)dfs(i);
        if(!works)continue;
        ans++;
    }
    cout << ans/2 * m << '\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...