• COGS 服务点设置 DB


    ★   输入文件:djsa.in   输出文件:djsa.out   简单对比
    时间限制:1 s   内存限制:128 MB

    问题描述
    为了进一步普及九年义务教育,政府要在某乡镇建立一所希望小学,该乡镇共有n个村庄,村庄间的距离已知,请问学校建在哪个村庄最好?(好坏的标准是学生就近入学,即在来上学的学生中,以最远的学生走的路程为标准。或者说最远的学生与学校的距离尽可能的小。)
    【输入格式】
    输入由若干行组成,第一行有两个整数,n(1≤n≤100)、m(1≤m≤n*n);n表示村庄数,m表示村庄间道路数。第2至m+1行是每条路的信息,每行三个整数,为道路的起点、终点和两村庄间距离。(村庄从0开始编号)
    【输出格式】
    一个整数,学校所在村庄编号(如果两个村庄都适合建立学校,选择编号小的村庄建学校)。
    【输入样例】
    输入文件名:djsa.in
    6 8
    0 2 10
    0 4 30
    0 5 100
    1 2 5
    2 3 50
    3 5 10
    4 3 20
    4 5 60
    【输出样例】
    输出文件名:djsa.out
    4
      1 #include<iostream>
      2 #include<cstdio>
      3 #include<algorithm>
      4 #include<queue>
      5 
      6 using namespace std;
      7 const int N=101;
      8 const int maxn=999999;
      9 
     10 int head[N];
     11 int now=1;
     12 int vis[N];
     13 int dis[N];
     14 queue<int>q;
     15 int n,m;
     16 int js;
     17 
     18 struct node{
     19     int u,v,w,nxt;
     20 }E[N*N];
     21 
     22 struct Node{
     23     int me,answer;
     24 }Ans[N];
     25 
     26 inline void read(int &x)
     27 {
     28     char c=getchar();
     29     x=0;
     30     while(c<'0'||c>'9')c=getchar();
     31     while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
     32 }
     33 
     34 inline void add(int u,int v,int w)
     35 {
     36     E[now].u=u;
     37     E[now].v=v;
     38     E[now].w=w;
     39     E[now].nxt=head[u];
     40     head[u]=now++;
     41 }
     42 
     43 inline int spfa(int s)
     44 {
     45     for(int i=0;i<n;i++)
     46         dis[i]=maxn,vis[i]=0;
     47     while(q.size())q.pop();
     48     dis[s]=0;
     49     vis[s]=1;
     50     q.push(s);
     51     while(!q.empty())
     52     {
     53         int top=q.front();
     54         q.pop();
     55         for(int i=head[top];i!=-1;i=E[i].nxt)
     56         {
     57             int v=E[i].v;
     58             int w=E[i].w;
     59             if(dis[top]+w<dis[v])
     60             {
     61                 dis[v]=dis[top]+w;
     62                 if(!vis[v])
     63                     q.push(v);
     64             }
     65         }
     66     }
     67     int answer=-1;
     68     for(int i=1;i<=n;i++)
     69         if(i!=s)
     70             answer=max(answer,dis[i]);
     71     return answer;
     72     
     73 }
     74 
     75 inline bool cmp(Node a,Node b)
     76 {
     77     if(a.answer==b.answer)
     78         return a.me<b.me;
     79     else return a.answer<b.answer;
     80 }
     81 
     82 int main()
     83 {
     84     freopen("djsa.in","r",stdin);
     85     freopen("djsa.out","w",stdout);
     86     read(n);
     87     read(m);
     88     for(int i=0;i<n;i++)
     89        head[i]=-1;
     90     
     91     for(int i=1;i<=m;i++)
     92     {
     93         int u,v,w;
     94         read(u);
     95         read(v);
     96         read(w);
     97         add(u,v,w);
     98         add(v,u,w);
     99     }
    100     
    101     for(int i=0;i<n;i++)
    102     {
    103         Ans[i].me=i;
    104         Ans[i].answer=spfa(i);
    105     }
    106     sort(Ans,Ans+n,cmp);
    107     printf("%d",Ans[0].me);
    108     
    109     return 0;
    110 }
  • 相关阅读:
    php流程控制
    php运算符
    php数据类型
    php基础
    谈谈2019年
    聊聊这三年
    第二次作业(源代码)
    个人介绍
    22.python匿名函数详解
    11.python内置模块之json模块
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6858129.html
Copyright © 2020-2023  润新知