zoukankan      html  css  js  c++  java
  • codeves 2038

    题意:中文

    思路:我们把每一个牧场作为起点,算出到每一个奶牛在的牧场的最短距离。取个min.

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int Max=803;
     4 const int INF=1e8;
     5 
     6 int n,p,c;//牛,牧场,道路//
     7 int a[Max],last[Max];
     8 struct node{
     9     int to,next,val;
    10 }e[Max*400];
    11 int len,vis[Max],dis[Max];
    12 
    13 void add(int u,int v,int x){
    14     e[len].to=v;e[len].next=last[u];
    15     e[len].val=x;last[u]=len++;
    16 }
    17 struct point
    18 {
    19     int val,id;
    20     point(int id,int val):id(id),val(val){}
    21     bool operator <(const point &x)const{
    22         return val>x.val;
    23     }
    24 };
    25 int ss;
    26 void hh(int s)
    27 {
    28     memset(vis,0,sizeof(vis));
    29     for(int i=1;i<=p;i++)
    30         dis[i]=INF;
    31     priority_queue<point> q;
    32     q.push(point(s,0));
    33     dis[s]=0;
    34     while(!q.empty())
    35     {
    36         int cur=q.top().id;
    37         int curr=q.top().val;
    38         q.pop();
    39         if(vis[cur]) continue;
    40         vis[cur]=true;
    41         for(int i=last[cur];i!=-1;i=e[i].next)
    42         {
    43             int id=e[i].to;
    44             if(!vis[id] && curr+e[i].val < dis[id])
    45             {
    46                 dis[id]=curr+e[i].val;
    47                 q.push(point(id,dis[id]));
    48             }
    49         }
    50 
    51     }
    52     ss=0;
    53     for(int i=1;i<=n;i++)
    54             ss+=dis[a[i]];
    55          //   cout<<ss<<endl;
    56 }
    57 int main()
    58 {
    59     int x,y,z;
    60     scanf("%d%d%d",&n,&p,&c);
    61     for(int i=1;i<=n;i++)
    62         scanf("%d",&a[i]);
    63     memset(last,-1,sizeof(last));
    64     for(int i=1;i<=c;i++){
    65         scanf("%d%d%d",&x,&y,&z);
    66         add(x,y,z);
    67         add(y,x,z);
    68     }
    69    int  Min=INF;
    70     for(int i=1;i<=p;i++){
    71         hh(i);
    72         Min=min(ss,Min);
    73     }
    74     printf("%d
    ",Min);
    75 }
  • 相关阅读:
    正则表达式
    git指令
    前端测试 Jest/(Mocha) Typescript/Javascript Vueunitstest
    mpvue使用wxcharts.js显示各类图表
    css margintop 失效
    reduce 黑科技
    vue cli 项目创建
    css实现垂直水平居中
    MySQL基础教程之存储过程
    4组Alpha冲刺2/6
  • 原文地址:https://www.cnblogs.com/hhxj/p/6994915.html
Copyright © 2011-2022 走看看