zoukankan      html  css  js  c++  java
  • bzoj3402

    题解:

    spfa最短路

    然后枚举判断奇数

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5+5;
    int n,m,x,y,ne[N],num,fi[N],zz[N],dis[N],f[N],b[N*100];
    void jb(int x,int y)
    {
        ne[++num]=fi[x];
        fi[x]=num;
        zz[num]=y;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        while (m--)
         {
             scanf("%d%d",&x,&y);
             jb(x,y);jb(y,x);
         }
        memset(dis,0x3f,sizeof dis); 
        dis[1]=0;
        f[1]=1;
        b[0]=1;
        int l=0,r=1;
        while (l<r) 
         {
             int now=b[l++];
             f[now]=0;
             for (int i=fi[now];i;i=ne[i])
              {
                  int t=zz[i];
                  if (dis[t]>dis[now]+1)
                   {
                       dis[t]=dis[now]+1;
                    if (!f[t])
                     {
                         f[t]=1;
                         b[r++]=t;
                     } 
                   }
              }
         }
        int p=1,ans=1;
        for (int i=2;i<=n;i++)
         {
             if (dis[i]>dis[p])p=i,ans=0;
             if (dis[i]==dis[p])ans++;
         }
        printf("%d %d %d",p,dis[p],ans); 
    }
  • 相关阅读:
    PowerMockito
    java--树封装
    plugin--Lombok
    Mysql--sql
    Oracle--sql
    hive--分区表和分桶表
    hive支持的数据类型和存储格式
    HashMap
    golang 创建 tun 设备
    golang ctrie demo
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/8214603.html
Copyright © 2011-2022 走看看