题目链接:
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;
}