求调一个死循环
  • 板块学术版
  • 楼主Trubiacy_
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/5/22 19:51
  • 上次更新2024/5/22 21:29:23
查看原帖
求调一个死循环
750535
Trubiacy_楼主2024/5/22 19:51

如题 样例输入:

3 2
1 2
1 3

代码如下:

#include <bits/stdc++.h>
#define int long long
#define MAXN 0x3f3f3f3f3f3f3f3f
#define MINN -0x3f3f3f3f3f3f3f3f
#define Trubiacy ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

#define u first 
#define dep second 

typedef pair<int,int> pii;
const int N=1e5+29;
int n,m,ans=MAXN;
bool vis[N];
vector<int> a[N];

int bfs(int s){
    int res=0;
    queue<pii> q;
    memset(vis,0,sizeof vis);
    q.push({s,0});
    while(q.size()){
        //cout<<q.size()<<endl;
        int u=q.front().u;
        int dep=q.front().dep;
        q.pop();
        res=max(res,dep);
        if(res>ans) return res;
        for(auto v:a[u]){
            // cout<<1;
            if(vis[v]) continue;
            if(v<s) return MAXN;
            q.push({v,dep+1});
        }
    }
    return res;
}

signed main(){
    // Trubiacy;
    int Tracy=1;
    // int Tracy; cin>>Tracy;
    while(Tracy--){
        cin>>n>>m;
        // cout<<1;
        for(int i=1;i<=m;i++){
            int u,v;
            cin>>u>>v;
            a[u].push_back(v);
            a[v].push_back(u);
        }
        for(int i=1;i<=n;i++){
            // cout<<1;
            ans=min(ans,bfs(i));
        }
        cout<<ans;
    }
    return 0;
}

找了好久了没找出来【悲

2024/5/22 19:51
加载中...