hiho week 63 register

Ended

Participants:1488

Verdict:Accepted
Score:100 / 100
Submitted:2015-09-12 23:47:25

Lang:G++

Edit
1
2
3
4
5
6
7
8
#include "iostream"
using namespace std;
const int MAXN = 14;
int edge[MAXN],p[1 << MAXN],cnt;
void dfs(int nowVertex, int unused) {
    if (!unused) { cnt += (edge[nowVertex] & 1); return; }int rest = unused & edge[nowVertex]; while (rest) { int tp = rest & (-rest); dfs(p[tp], unused - tp); rest -= tp; }return;}
int main(){int n, m; cin >> n >> m; for (int i = 0; i < n; ++i)p[1 << i] = i + 1; while (m--) { int u, v; cin >> u >> v; edge[u] |= 1 << (v - 1); }dfs(1, (1 << n) - 2); printf("%d\n", cnt);}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX