蓝桥杯 PREV-13 网络寻路(dfs)

题目链接:

http://lx.lanqiao.cn/problem.page?gpid=T36

思路:

每一个点都可以作为起点,用dfs遍历路径条数;

代码:

#include<bits/stdc++.h>

using namespace std;

int n, m, s;
long long ans;
vector<int> G[10005];
bool vst[10005];
inline void dfs(int & u, int cnt) {
    
    
	if(cnt == 3) {
    
     ++ans; return;}
	vst[u] = true;
	for(int i = 0; i < G[u].size(); ++i) {
    
    
		int v = G[u][i];
		if(!vst[v] || (cnt == 2 && v == s)) dfs(v, cnt + 1);
	}
	vst[u] = false;
}

int main() {
    
    
#ifdef MyTest
	freopen("Sakura.txt", "r", stdin);
#endif
	scanf("%d %d", &n, &m);
	for(int i = 0; i < m; ++i) {
    
    
		int u, v;
		scanf("%d %d", &u, &v);
		G[u].push_back(v);
		G[v].push_back(u);	
	}
	for(s = 1; s <= n; ++s) dfs(s, 0);
	printf("%lld", ans);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45228537/article/details/104751642