#include <iostream>
#include <vector>
using namespace std;
int ans=0;
int n, m;
void subsets (int i, vector<vector<bool>>&proh, vector<int>&negado){
if (i==n){
ans++;
return;
}
if (negado[i]==0){
for (int k=0; k<n; k++){
if (proh[i][k]==true) negado[k]++;
}subsets(i+1, proh, negado);
for (int k=0; k<n; k++){
if (proh[i][k]==true) negado[k]--;
}
}
subsets(i+1, proh, negado);
return;
}
int main(){
cin>>n>>m;
vector<vector<bool>>proh(n, vector<bool>(n, false));
vector<int>negado(n, 0);
while (m--){
int a, b;
cin>>a>>b;
proh[a-1][b-1]=true;
proh[b-1][a-1]=true;
}subsets(0, proh, negado);
cout<<ans;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
4 ms |
344 KB |
Output is correct |
10 |
Correct |
18 ms |
428 KB |
Output is correct |