求助三个点RE
  • 板块学术版
  • 楼主F000000
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/25 13:09
  • 上次更新2024/7/25 14:32:28
查看原帖
求助三个点RE
1404807
F000000楼主2024/7/25 13:09
#include<bits/stdc++.h>
using namespace std;
const int maxn=50010;
struct egde{
    int to,next;
}edge[maxn];
int d[maxn],head[maxn],visited[maxn],m=0;
void add(int x,int y){
    edge[++m].to=y;
    edge[m].next = head[x];
    head[x]=m;
}
void bfs(){
    queue<int> Q;
    Q.push(1);
    d[1]=0,visited[1]=1;
    while(!Q.empty()){
        int u=Q.front();
        Q.pop();
        for(int i=head[u];i;i = edge[i].next){
            int v=edge[i].to;
            if(visited[v]==0){
                visited[v]=1;
                d[v]=d[u]+1;
                Q.push(v);
            }
        }
    }
}
int main(){
    //freopen("hideseek.in","r",stdin);
    //freopen("hideseek.out","w",stdout);
    int n,u,v,k,ans=0,res=0,ma=0;
    scanf("%d %d",&k,&n);
    for(int i=1;i<=n;i++){
        scanf("%d %d",&u,&v);
        add(u,v);
        add(v,u);
    }
    bfs();
    for(int i=1;i<=k;i++){
        if(d[i]>ma){
            ma=d[i];
            ans=i;
        }
    }
    for(int i=1;i<=k;i++){
        if(d[i]==ma){
            res++;
        }
    }
    printf("%d %d %d",ans,ma,res);
}
2024/7/25 13:09
加载中...