P2935 [USACO09JAN]最好的地方Best Spot

Floyd的水题(黄题)

海星。

这可能是我第一道发的Floyd的博客

inline void Floyd(){
for(register int k=;k<=n;k++)
for(register int i=;i<=n;i++)
for(register int j=;j<=n;j++) dis[i][j]=Min(dis[i][j],dis[i][k]+dis[k][j]);
}

这个是Floyd的算法

很简单就三行 仅此而已

但是 这个是一种方法

简单的说 Floyd是一种DP 求最短路(最长路)反正比spfa啥的好打

最关键就是时间复杂度比较高 高达N^3 所以没几道题用的到Floyd 反而多的是求正负环的spfa dijkstra

不说那么多了

见代码

#include <bits/stdc++.h>
#define Min(a,b) a<b?a:b
using namespace std;
typedef long long LL;
inline LL read () { LL res = ;int f () ;char ch = getchar ();
while (!isdigit(ch)) { if (ch == '-') f = - ;ch = getchar();}
while (isdigit(ch)) res = (res << ) + (res << ) + (ch ^ ) ,ch = getchar(); return res * f ;
}
LL n,m,p;
LL l[+];
LL dis[+][+];
const LL Inf=0x3f3f3f3fLL;
inline void Init(){
for(register int i=;i<=n;i++){
for(register int j=;j<=n;j++) dis[i][j]=Inf;
dis[i][i]=;
}
}
inline void Floyd(){
for(register int k=;k<=n;k++)
for(register int i=;i<=n;i++)
for(register int j=;j<=n;j++) dis[i][j]=Min(dis[i][j],dis[i][k]+dis[k][j]);
}
signed main () {
n=read(),p=read(),m=read();
Init();
for(register int i=;i<=p;i++) l[i]=read();
for(register int i=;i<=m;i++) {
LL u=read(),v=read();
dis[u][v]=dis[v][u]=read();
}
Floyd();
LL sum,ans,cnt=Inf;
for(register int i=;i<=n;i++){
sum=0LL;
for(register int j=;j<=p;j++) sum+=dis[i][l[j]];
if(sum<cnt) cnt=sum,ans=i;
}
cout << ans << endl ;
return ;
}

随机推荐

  1. Linux学习笔记记录(五)

  2. Vue.Draggable实现拖拽效果(采坑小记)

    之前有写过Vue.Draggable实现拖拽效果(快速使用)(http://www.cnblogs.com/songdongdong/p/6928945.html)最近项目中要用到这个拖拽的效果,当产 ...

  3. HDU 5115 (2014ACM/ICPC亚洲区北京站) D题(Dire Wolf)

    题目传送门 设dp[i][j]为杀掉区间i到j之间的狼需要付出的最小代价,那么dp[i][j]=min{dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1]} Java代码 ...

  4. JavaScript 面向对象的编程(三) 类的继承

    定义父类和子类的继承关系 //声明父类 function SuperClass(){ this.superValue = true; } //为父类添加共有方法 SuperClass.prototyp ...

  5. js 防止重复提交表单

    var addFlag = true; function addQuestion(){ if(!addFlag){ return; } addFlag = false; //执行更新操作 jQuery ...

  6. (远程调试)-idea

    远程调试 1.开启远程调试的端口 tomcat示例: catalina.bat jpda start

  7. 搭建Kafka运行环境-Mac版

    停止kafka服务: kafka_2.12-0.10.2.1> bin/kafka-server-stop.sh kafka_2.12-0.10.2.1> bin/zookeeper-se ...

  8. FZU 2109 Mountain Number

    http://acm.fzu.edu.cn/problem.php?pid=2109 题意:找出区间[l,r]内满足奇数位的数字大于相邻偶数位数字的个数. 典型的数位dp了,记录一下当前位是奇数位还是 ...

  9. noip模拟赛 蒜头君的树

    分析:这道题问的是树上整体的答案,当然要从整体上去考虑. 一条边对答案的贡献是这条边一端连接的点的个数*另一端连接的点的个数*边权,可以用一次dfs来统计答案,之后每次更改操作在原答案的基础上增减就好 ...

  10. 遇到很多次,要注意区分service调用,本地用户调用这些区别

    WTSQueryUserToken返回1314   The WTSQueryUserToken function obtains the primary access token of the log ...