记录编号 185776 评测结果 AAAAAAAAAA
题目名称 [USACO 3.2] 香甜的黄油 最终得分 100
用户昵称 Gravatardevil 是否通过 通过
代码语言 C++ 运行时间 0.254 s
提交时间 2015-09-08 22:30:20 内存使用 0.33 MiB
显示代码纯文本
#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <map>
#include <stack>
#include <queue>
#include <ctime>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned int uint;
const int max_int=1061109567;
const int maxn=810;
const int maxm=20;
const int mod=10007;

struct node
{
    int to;
    int val;
};

vector<node> G[maxn];
int d[maxn];
int a[maxn];

void dijkstra(int st)
{
    queue<int> q;
    q.push(st);
    d[st]=0;
    while(!q.empty())
    {
        int u=q.front();
        q.pop();
        int len=G[u].size();
        for(int i=0;i<len;i++)
        {
            node t=G[u][i];
            if(d[t.to]>d[u]+t.val)
            {
                d[t.to]=d[u]+t.val;
                q.push(t.to);
            }
        }
    }
}

int main()
{
    freopen("butter.in","r",stdin);
    freopen("butter.out","w",stdout);
    //clock_t st=clock();
    int n,p,c;scanf("%d%d%d",&n,&p,&c);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=c;i++)
    {
        int u,v,w;scanf("%d%d%d",&u,&v,&w);
        node t;t.to=v;t.val=w;
        G[u].push_back(t);t.to=u;
        G[v].push_back(t);
    }
    int ans=max_int;
    for(int i=1;i<=p;i++)
    {
        memset(d,0x3f,sizeof(d));
        dijkstra(i);
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            cnt+=d[a[i]];
        }
        ans=min(ans,cnt);
    }
    printf("%d\n",ans);
    //clock_t ed=clock();
    //printf("\nTime used : %.7lf Ms\n",double(ed-st)/CLOCKS_PER_SEC);
    return 0;
}