原题链接:https://www.luogu.org/problem/show?pid=1828#sub

经典的最短路问题。

各位不要被题目条件迷惑了,牧场想象成点,道路想象成边,奶牛所在的位置想象成点权就好。

输入的是无向图,所以在正向连边时反向连边。然后我们枚举所有的牧场,以枚举到的牧场作为起点寻求最短路,记录好dis数组。

算出最短路径后我们再枚举所有奶牛,开一个变量nowans记录以当前牧场为集合地点的所有牛需要走的最短路径,便有nowans += dis[c[j]] (j枚举自1到奶牛数)。

然后维护一下ans,输出就好了。

其实这题如果数据量较小的话可以用floyed求最短路。

参考代码:

 #include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
#define maxn 23333
#define INF 2147483647
using namespace std;
struct Edge{
int from,to,dis;
};
Edge edge[maxn];
int head[maxn];
int dis[maxn];
int u,v,d,tot = ;
bool inq[maxn];
int c[maxn];
int N,P,C;
int ans = INF;
int nowans;
void add_edge(int from,int to,int dis){
edge[++tot].from = head[from];
edge[tot].to = to;
edge[tot].dis = dis;
head[from] = tot;
} void spfa(int s){
memset(inq,false,sizeof(inq));
for (int i=;i<=P;i++)
dis[i] = INF;
dis[s] = ;
queue<int> q;
q.push(s);
inq[s] = true;
while (!q.empty()){
int u = q.front();
q.pop();
inq[u] = false;
for (int i = head[u];i!=;i=edge[i].from){
int v = edge[i].to;
int w = edge[i].dis;
if (dis[u] + w < dis[v]){
dis[v] = w + dis[u];
if (!inq[v]){
inq[v] = true;
q.push(v);
}
}
}
}
} int main(){
cin >> N >> P >> C;
for (int i=;i<=N;i++)
cin >> c[i];
for (int i=;i<=C;i++){
cin >> u >> v >> d;
add_edge(u,v,d);
add_edge(v,u,d);
}
for (int i=;i<=P;i++){
spfa(i);
nowans = ;
for (int j=;j<=N;j++)
nowans += dis[c[j]];
ans = min(ans,nowans);
}
cout << ans << endl;
return ;
}

香甜的黄油 Sweet Butter的更多相关文章

  1. 洛谷P1828 香甜的黄油 Sweet Butter

    P1828 香甜的黄油 Sweet Butter 241通过 724提交 题目提供者JOHNKRAM 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 我的SPFA为什么TLE.. 为 ...

  2. 【香甜的黄油 Sweet Butter】

    [香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...

  3. P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小

    P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...

  4. [最短路]P1828 香甜的黄油 Sweet Butter

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

  5. P1828 香甜的黄油 Sweet Butter

    对于这道洛谷ac而我整了一下午的codevs的题,我也是很绝望啊. 原因是队列数组开小了我勒个去???我说STL怎么能过 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧 ...

  6. [LUOGU] P1828 香甜的黄油 Sweet Butter

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

  7. P1828 香甜的黄油 Sweet Butter (spfa)

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

  8. P1828 [USACO3.2]香甜的黄油 Sweet Butter

    题目描述 农夫$John$发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道$N(1\leqslant N\leqslant 500)$只奶牛会过来舔它,这样就能做出能卖好价钱的超甜 ...

  9. USACO Section 3.2 香甜的黄油 Sweet Butter

    本题是多源最短路问题 但使用弗洛伊德算法会超时 而因为边数目比较少 所以用队列优化后的迪杰斯特拉算法可以通过 #include<iostream> #include<cstring& ...

随机推荐

  1. os系统

    任务延时函数OSTimeDly 功能:调用该函数的任务将自己延时一段时间并执行一次任务调度,一旦规定的延时时间完成或有其它的任务通过调用OSTimeDlyResume()取消了延时,调用OSTimeD ...

  2. Spark算子--mapPartitions和mapPartitionsWithIndex

    mapPartitions--Transformation类算子 代码示例 result   mapPartitionsWithIndex--Transformation类算子 代码示例 result ...

  3. 算法-java代码实现希尔排序

    希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2 ...

  4. DEDECMS点击主栏目默认显示第一个子栏目列表的方法

    本文实例讲述了DEDECMS点击主栏目默认显示第一个子栏目列表的方法.分享给大家供大家参考.具体分析如下: 今天公司有个需求是,点击导航上的父栏目进去默认显示第一个子栏目的列表,以下是具体实现方法,可 ...

  5. 前端自动化构建工具Gulp简单入门

    昨天听同事分享了Gulp的一些简单使用,决定自己也试一试. 一.安装 gulp是基于nodejs的,所以要先下载安装node(直接搜node,在官网下载就好了) 1.全局安装gulp npm inst ...

  6. Intellij idea 中修改java web代码 ,网页不同步

    问题可能出在  Intellij  idea 没有将源码保存在本地,浏览器访问了缓存而没有访问最新文件 用命令行查看了源码,同步了 接着禁止浏览器缓存,网页同步了 打开火狐浏览器 输入 about:c ...

  7. dedecms_

    2012-7-5(no1)当我们点击检索结果的某个电影超链接时,如何跳转到对应的内容页[本资源由www.qinglongweb.com搜集整理] dedelist标签 --可以嵌套 项目移植: mys ...

  8. jsp里的逻辑语句c:if和c:choose

    1.c:if <c:if test=""></c:if> c:when的test里可以是变量或者是一个EL表达式,其结果应该是true或者false. EL ...

  9. 理解Python中的装饰器//这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档

    转自:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html 这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档 ...

  10. 关于oracle视图小结

    关于oracle的视图小记:一. 视图:就是对SQL语句的封装,使用起来更方便.不易出错 优点: 1.简化数据操作:视图可以简化用户处理数据的方式 2.着重于特定数据:不必要的数据或敏感的数据可以 不 ...