• csu


    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1659

    题意是找一个图的中心,图的中心定义是某一个点到其他点的最大距离最小,如果有多个排序输出.

    注意这里大到其他点的距离是找一个最短的距离,那么就转化成了最短路的问题,求出每个点与其它点的最大距离,

    保存并且求出最大距离中的最小距离,然后判断有几个点满足条件输出即可.

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <cmath>
      4 #include <vector>
      5 #include <cstring>
      6 #include <string>
      7 #include <algorithm>
      8 #include <string>
      9 #include <set>
     10 #include <functional>
     11 #include <numeric>
     12 #include <sstream>
     13 #include <stack>
     14 #include <map>
     15 #include <queue>
     16 #include <deque>
     17 //#pragma comment(linker, "/STACK:102400000,102400000")
     18 #define CL(arr, val)    memset(arr, val, sizeof(arr))
     19 
     20 #define ll long long
     21 #define INF 0x7f7f7f7f
     22 #define lc l,m,rt<<1
     23 #define rc m + 1,r,rt<<1|1
     24 #define pi acos(-1.0)
     25 
     26 #define L(x)    (x) << 1
     27 #define R(x)    (x) << 1 | 1
     28 #define MID(l, r)   (l + r) >> 1
     29 #define Min(x, y)   (x) < (y) ? (x) : (y)
     30 #define Max(x, y)   (x) < (y) ? (y) : (x)
     31 #define E(x)        (1 << (x))
     32 #define iabs(x)     (x) < 0 ? -(x) : (x)
     33 #define OUT(x)  printf("%I64d
    ", x)
     34 #define lowbit(x)   (x)&(-x)
     35 #define Read()  freopen("a.txt", "r", stdin)
     36 #define Write() freopen("b.txt", "w", stdout);
     37 #define maxn 110
     38 #define maxv 5010
     39 #define mod 1000000000
     40 using namespace std;
     41 
     42 struct edge
     43 {
     44     int to,weight;
     45     edge() {}
     46     edge(int a,int b)
     47     {
     48         to=a;
     49         weight=b;
     50     }
     51 };
     52 
     53 vector<edge>adjmap[maxv];
     54 bool in_queue[maxn];
     55 int dist[maxn];
     56 int n,m,p[maxn],ans[maxn];
     57 
     58 int spfa(int a)
     59 {
     60     queue<int>que;
     61     for(int i=1;i<=n;i++)
     62     {
     63         in_queue[i]=false;
     64         dist[i]=INF;
     65     }
     66     que.push(a);
     67     dist[a]=0;
     68     in_queue[a]=true;
     69     while(!que.empty())
     70     {
     71         int x=que.front();que.pop();
     72         in_queue[x]=false;
     73         for(int i=0;i<adjmap[x].size();i++)
     74         {
     75             int to=adjmap[x][i].to;
     76             edge temp=adjmap[x][i];
     77             if(dist[x]<INF&&(dist[to]>dist[x]+temp.weight))
     78             {
     79                 if(!in_queue[to])
     80                 {
     81                     in_queue[to]=true;
     82                     dist[to]=dist[x]+temp.weight;
     83                     que.push(to);
     84                 }
     85             }
     86         }
     87     }
     88     int x=0;
     89     for(int i=1;i<=n;i++)
     90         x=max(x,dist[i]);
     91     return x;
     92 }
     93 int main()
     94 {
     95     //Read();
     96     int t,a,b;
     97     scanf("%d",&t);
     98     while(t--)
     99     {
    100         scanf("%d%d",&n,&m);
    101         for(int i=1;i<=n;i++) adjmap[i].clear();
    102         for(int i=1;i<=m;i++)
    103         {
    104             scanf("%d%d",&a,&b);
    105             adjmap[a].push_back(edge(b,1));
    106             adjmap[b].push_back(edge(a,1));
    107         }
    108         int x=INF,j=0;
    109         for(int i=1;i<=n;i++)
    110         {
    111             p[i]=spfa(i);
    112             x=min(x,p[i]);
    113         }
    114         for(int i=1;i<=n;i++)
    115         {
    116             if(p[i]==x) ans[j++]=i;
    117         }
    118         printf("%d
    ",j);
    119         for(int i=0;i<j;i++)
    120         {
    121             if(i!=j-1) printf("%d ",ans[i]);
    122             else printf("%d
    ",ans[i]);
    123         }
    124     }
    125     return 0;
    126 }
  • 相关阅读:
    阿里云oss前端javascript签名上传爬坑手册
    关于文件上传获取视频播放时长
    用js获取视频播放时长
    关于文件上传阿里云Oss
    两种方式实现图片上传在线预览
    关于input file img实时预览获取文件路径的问题
    关于input file 改样式的操作方式
    关于jquery attr()与prop() 的区别
    弹窗确认操作的业务逻辑与几种方式
    [LintCode] Flip Bits
  • 原文地址:https://www.cnblogs.com/nowandforever/p/4701833.html
Copyright © 2020-2023  润新知