博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[USACO3.2]Sweet Butter
阅读量:6712 次
发布时间:2019-06-25

本文共 1195 字,大约阅读时间需要 3 分钟。

题目大意:

给定一张$k$个结点,$m$条边的无向图,其中有$n$个点被标记,在这$k$个点中找出一个点使得这个点到那$n$个点的最短距离之和最小,求出这个距离和。

思路:

对于每个标记结点跑最短路,最后枚举每个结点,求出其到各个标记结点的最短距离和,取$min$。

1 #include
2 #include
3 #include
4 #include
5 inline int getint() { 6 char ch; 7 while(!isdigit(ch=getchar())); 8 int x=ch^'0'; 9 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');10 return x;11 }12 const int inf=0x7fffffff;13 const int V=801;14 struct Edge {15 int to,w;16 };17 std::vector
e[V];18 inline void add_edge(const int u,const int v,const int w) {19 e[u].push_back((Edge){v,w});20 }21 struct Vertex {22 int id,dis;23 bool operator > (const Vertex &another) const {24 return dis>another.dis;25 }26 };27 int k;28 int dis[V][V];29 __gnu_pbds::priority_queue
> q;30 __gnu_pbds::priority_queue
>::point_iterator p[V];31 inline void Dijkstra(const int s,int *dis) {32 q.clear();33 for(int i=1;i<=k;i++) {34 p[i]=q.push((Vertex){i,dis[i]=(i==s)?0:inf});35 }36 while(q.top().dis!=inf) {37 int x=q.top().id;38 for(unsigned i=0;i

 

转载于:https://www.cnblogs.com/skylee03/p/7394891.html

你可能感兴趣的文章
APUE读书笔记-01UNIX系统概述(1)
查看>>
APUE读书笔记-15进程内部通信-10客户服务特性
查看>>
KendoUI系列:ComboBox
查看>>
nginx日志错误日志说明
查看>>
mac下,有哪些好用的抓包工具?
查看>>
WPS Office for Mac
查看>>
Redhat5.5安装oracle11g
查看>>
负载均衡设备选型计算参考
查看>>
随笔-文件的读写
查看>>
tcp 状态以及三次握手
查看>>
Linux 打开文件数1024限制的原理以及解决办法
查看>>
我的友情链接
查看>>
Install IIS from Windows Server 2008 R2
查看>>
Lync Server 2010迁移至Lync Server 2013部署系列 Part7:配置Office Web App 02
查看>>
我的友情链接
查看>>
WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!的分析
查看>>
nginx禁止ip直接访问
查看>>
hadoop常用服务管理命令
查看>>
10.28 rsync工具10.29-10.30 rsync选项10.31 rsync通过ssh同步
查看>>
Fault,Error and Failure
查看>>