[ABC284E] Count Simple Paths 题解
本题可以使用深度优先搜索解决。
每遍历到一个点,计数器自增
因为本题的特殊约束“每个顶点度
如果搜的点数量大于 exit(0) 强制结束程序即可。
放代码:
#include<bits/stdc++.h>
using namespace std;
vector<int> g[200001];
bool b[200001];
int c=0;
void dfs(int u){
if(++c>=1e6)cout<<(int)1e6<<endl,exit(0);
for(int i:g[u])
if(!b[i])b[i]=true,dfs(i),b[i]=false;
return;
}
main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n,m; cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v; cin>>u>>v;
g[u].emplace_back(v);
g[v].emplace_back(u);
}
b[1]=true; dfs(1);
cout<<c<<endl;
return 0;
}