One-stroke Path

AtCoder
IDabc054_c
Time2000ms
Memory256MB
Difficulty
You are given an undirected unweighted graph with $N$ vertices and $M$ edges that contains neither self-loops nor double edges. Here, a _self-loop_ is an edge where $a_i = b_i (1≤i≤M)$, and _double edges_ are two edges where $(a_i,b_i)=(a_j,b_j)$ or $(a_i,b_i)=(b_j,a_j) (1≤i<j≤M)$. How many different paths start from vertex $1$ and visit all the vertices exactly once? Here, the endpoints of a path are considered visited. For example, let us assume that the following undirected graph shown in Figure 1 is given. ![image](https://atcoder.jp/img/5013/888b2f55d46f66125a4ac25cd8cfc19a.png)Figure 1: an example of an undirected graph The following path shown in Figure 2 satisfies the condition. ![image](https://atcoder.jp/img/5013/694eda4639f3f4608c9f0b38af1633d3.png)Figure 2: an example of a path that satisfies the condition However, the following path shown in Figure 3 does not satisfy the condition, because it does not visit all the vertices. ![image](https://atcoder.jp/img/5013/4739baf6665ab2832ea424b1cc404ee1.png)Figure 3: an example of a path that does not satisfy the condition Neither the following path shown in Figure 4, because it does not start from vertex $1$. ![image](https://atcoder.jp/img/5013/7ad401c30e069a98a34c8cfec70ec278.png)Figure 4: another example of a path that does not satisfy the condition ## Constraints * $2≦N≦8$ * $0≦M≦N(N-1)/2$ * $1≦a_i<b_i≦N$ * The given graph contains neither self-loops nor double edges. ## Input The input is given from Standard Input in the following format: $N$ $M$ $a_1$ $b_1$ $a_2$ $b_2$ $:$ $a_M$ $b_M$ [samples]
Samples
Input #1
3 3
1 2
1 3
2 3
Output #1
2

The given graph is shown in the following figure:

![image](https://atcoder.jp/img/5013/43c0ac53de20d989d100bf60b3cd05fa.png)

The following two paths satisfy the condition:

![image](https://atcoder.jp/img/5013/c4a27b591d364fa479314e3261b85071.png)
Input #2
7 7
1 3
2 7
3 4
4 5
4 6
5 6
6 7
Output #2
1

This test case is the same as the one described in the problem statement.
API Response (JSON)
{
  "problem": {
    "name": "One-stroke Path",
    "description": {
      "content": "You are given an undirected unweighted graph with $N$ vertices and $M$ edges that contains neither self-loops nor double edges.   Here, a _self-loop_ is an edge where $a_i = b_i (1≤i≤M)$, and _double ",
      "description_type": "Markdown"
    },
    "platform": "AtCoder",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "abc054_c"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "You are given an undirected unweighted graph with $N$ vertices and $M$ edges that contains neither self-loops nor double edges.  \nHere, a _self-loop_ is an edge where $a_i = b_i (1≤i≤M)$, and _double ...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments