#13185. 珅泽教育CSP-J第一轮模拟考第三十套 第 42 题
珅泽教育CSP-J第一轮模拟考第三十套 第 42 题
三、完善程序题(单项选择题,共30分)
完善程序(2):无向图最短环
图无自环、无重边,要求返回最短环长度;不存在环时返回 -1。
#include <bits/stdc++.h>
using namespace std;
int n;
vector<vector<int>> g(1005);
int findShortestCycle() {
int ans = (___(2)___);
int vis[1005] = {0};
int dist[1005];
int fa[1005];
memset(dist, 0x3f, sizeof dist);
for (int i = 0; i < n; i++) {
memset(vis, 0, sizeof vis);
memset(fa, -1, sizeof fa);
queue<int> q;
q.push(i);
fa[i] = i;
vis[i] = (___(3)___);
dist[i] = 0;
while (!q.empty()) {
int x = q.front();
q.pop();
for (int j = 0; j < g[x].size(); j++) {
int y = g[x][j];
if (!vis[y]) {
q.push(y);
dist[y] = dist[x] + 1;
(___(4)___);
vis[y] = i + 1;
continue;
}
if (vis[y] == i + 1 && y != fa[x]) {
ans = (___(5)___);
}
}
}
}
ans = (ans == 1e9 ? -1 : ans);
return ans;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
int u, v;
scanf("%d %d", &u, &v);
g[u].push_back(v);
(___(1)___);
}
cout << findShortestCycle();
return 0;
}
④处应填( )。
{{ select(1) }}
fa[y]=xfa[x]=yfa[x]=xfa[y]=y