#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |