站外模板题求助
查看原帖
站外模板题求助
760018
蟋蟀喵~~STLlover楼主2024/6/18 21:30

提议简述

给定一个无向图,求出其最小环,若没有环,输出 -1。

样例输入 #1

7 7
1 2
2 3
3 1
4 5
5 6
6 7
7 4

样例输出 #1

3

样例输入 #2

3 2
1 2
2 3

样例输出 #2

-1

my code:

#include <bits/stdc++.h>
using namespace std;
int n,m,dis[3000],ans = 2147483647,x,y;
vector <int> v[2000];
void dfs(int now,int fat,int st){
    dis[now] = st;
    for(auto i : v[now]){
        if(i != fat && st > dis[i]){
            if(dis[i] > -1){
                ans = min(ans,st - dis[i] + 1);
            }else{
                dfs(i,now,st + 1);
            }
        }
    }
}
int main(){
    cin >> n >> m;
    memset(dis,-1,sizeof dis);
    for(int i = 1; i <= m; i++){
        cin >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    for(int i = 1; i <= n; i++){
        if(dis[i] == -1){
            dfs(i,-1,0);
        }
    }
    if(ans == 2147483647){
        cout << -1;
    }else{
        cout << ans;
    }
    return 0;
}
2024/6/18 21:30
加载中...