藍橋杯 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章