# 2023/01/15 Mock interview Candidate:阿呀呀
###### tags: `mock interview`
<font size= 4><center> **倒數計時** </center></font>
<iframe id="oak-embed" width="480" height="80" style="display: block; margin: 0px auto; border: 0px;" src="https://embed-countdown.onlinealarmkur.com/zh-tw/#2023-01-15T21:05:00s@Asia%2FTaipei"></iframe>
https://atcoder.jp/contests/abc284/tasks/abc284_e
# 題目講解
time: 20:35
Let K be the number of simple paths (paths without repeated vertices) starting from vertex 1.
Print min(K, 10^6).
n m
4 2
1 2
2 3
path1 = 1
path2 = 1 -> 2
path3 = 1 -> 2 -> 3
K = 3
graph, edges,
each vertex,
find single path
# 作法講解
time: 20:38
ex1:
1
/ \
2 3
path: 1, 1->2, 1->3
ex2:
1
|
2
/ \
3 4
path: 1, 1->2, 1->2->3, 1->2->4
return 4.
1
|
2
/ \
3---4
```mermaid
graph TD;
1---2
2---3
2---4
3---4
4---5
```
single path: 1,
1->2
1->2->3
1->2->3->4
1->2->3->4->5
1->2->4->3
1->2->4->5
2,3,4
# coding
time: 20:59
```cpp=
void dfs(int node,
vector<vector<int>> &adj,
vector<bool> &visited,
int &ans,
int max_cnt)
{
visited[node] = true;
ans++;
if(ans >= max_cnt) {//error
return;
}
for(int next : adj[node]) {
if(visited[next]) { //mistake
continue;
}
dfs(next, adj, visited, ans, max_cnt); //error!
if(ans >= max_cnt) {
return;
}
}
visited[node] = false;
}
int get_single_path(int n, vector<vector<int> &edges)
{
vector<vector<int>> adj(n+1);
int ans = 0;
int max_cnt = 1000000;
vector<bool> visited(n, false);
//first build adjcent list
for(vector<int> &e : edges) {
adj[e[0]].push_back(e[1]);
adj[e[1]].push_back(e[0]);
}
//run dfs
dfs(1, adj, visited, ans, max_cnt);
return min(ans, max_cnt);//error!
}
```
# 完成
time: 21:13 (+8)
# Comment
提出的想法都蠻不錯的
但是有點忘記去觀察題目要的output了
ask for hint
之後有清楚意識到題目限制
function小錯 不過實作蠻快速的