时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
 
题目描述 Description

农夫John发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。当然,他将付出额外的费用在奶牛上。

农夫John很狡猾。他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。

农夫John知道每只奶牛都在各自喜欢的牧场呆着(一个牧场不一定只有一头牛)。给出各头牛在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那)。

输入描述 Input Description

第一行: 三个数:奶牛数N,牧场数P(2<=P<=800),牧场间道路数C(1<=C<=1450).

第二行到第N+1行: 1到N头奶牛所在的牧场号.

第N+2行到第N+C+1行: 每行有三个数:相连的牧场A、B,两牧场间距(1<=D<=255),当然,连接是双向的.

输出描述 Output Description

一行 输出奶牛必须行走的最小的距离和.

样例输入 Sample Input
3 4 5
2
3
4
1 2 1
1 3 5
2 3 7
2 4 3
3 4 5
样例图形
         P2
P1 @--1--@ C1
\ |\
\ | \
5 7 3
\ | \
\| \ C3
C2 @--5--@
P3 P4
样例输出 Sample Output
8
{说明: 放在4号牧场最优. }
数据范围及提示 Data Size & Hint

见描述

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue> using namespace std; queue<int>que;
int A,B,D,d[][],f[][];
int pla[],dis[],num[];
bool vis[];
int n,p,c; int main()
{
cin>>n>>p>>c;
for(int i=;i<=p;i++)
for(int j=;j<=p;j++)
d[i][j]=0x7fffffff/;
for(int i=;i<=n;i++)
cin>>pla[i];
for(int i=;i<=c;i++)
{
cin>>A>>B>>D;
d[A][B]=d[B][A]=D;
f[A][++num[A]]=B;
f[B][++num[B]]=A;
}
int minn=0x7fffffff/;
for(int i=;i<=p;i++)
{
for(int j=;j<=p;j++) dis[j]=0x7fffffff/;
memset(vis,,sizeof(vis));
dis[i]=;
que.push(i),vis[i]=;
while(!que.empty())
{
int x=que.front(); que.pop(), vis[x]=;
for(int j=;j<=num[x];j++)
{
if(dis[f[x][j]]>dis[x]+d[x][f[x][j]])
{
dis[f[x][j]]=dis[x]+d[x][f[x][j]];
if(!vis[f[x][j]])
{
vis[f[x][j]]=;
que.push(f[x][j]);
}
}
}
}
int tot=;
for(int j=;j<=n;j++)
tot+=dis[pla[j]];
if(minn>tot)
minn=tot;
}
printf("%d",minn);
return ;
}

最新文章

  1. eclipse新建web项目开发JSP
  2. [Hadoop] Hadoop学习笔记之Hadoop基础
  3. iOS开发小技巧--TextField的细节处理,键盘中return键的处理
  4. XML真正强大的功能是来自其元素与封装的内容
  5. BroadcastReceiver应用详解(转)
  6. C#.Net 导出Excel 之单元格 相关设置
  7. MFC 构建、消亡 顺序 (二)--多文档 (MDI)
  8. HDU 1069 Monkey and Banana (DP)
  9. Android Activity生命周期 onSaveInstanceState和onRestoreInstanceState
  10. python路径相关
  11. 关于移动手机端富文本编辑器qeditor图片上传改造
  12. Delphi TcxtreeList控件说明 转
  13. cf 323A A. Black-and-White Cube 立体构造 不知道为什么当k为奇数时构造不出来 挺有趣的题目吧
  14. A quike guide teaching you how to use matlab to read netCDF file and plot a figure
  15. 【转】Android播放音频MediaPlayer的几种方式介绍
  16. MFC控件编程进度条编写
  17. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
  18. 【极值问题】【CF33C】 Wonderful Randomized Sum
  19. Codeforces Round #380 (Div. 2)/729D Sea Battle 思维题
  20. Java应对Flash XSS攻击

热门文章

  1. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
  2. shell脚本,提取ip地址和子网掩码,和查外网ip地址信息。
  3. ios 检查内存泄露
  4. Leetcode 7 反转整数Reverse Integer
  5. database---many to many relationships(多对多关系型数据库)
  6. 关于Linux上的SSH服务无法启动,提示“/var/empty/sshd must be owned by root and not group or world-writable”错误
  7. python基础——14(shelve/shutil/random/logging模块/标准流)
  8. 算法学习记录-图——最小生成树之prim算法
  9. ubuntu搭建LAMP全教程
  10. PTA 08-图9 关键活动 (30分)