P1828 [USACO3.2]香甜的黄油 Sweet Butter
题目描述
农夫$John$发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道$N(1\leqslant N\leqslant 500)$只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。当然,他将付出额外的费用在奶牛上。
农夫$John$很狡猾。像以前的$Pavlov$,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。
农夫$John$知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛)。给出各头牛在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那)
输入格式
第一行: 三个数:奶牛数$N$,牧场数$P(2\leqslant P\leqslant 800)$,牧场间道路数$C(1\leqslant C\leqslant 1450)$
第二行到第$N+1$行: $1$到$N$头奶牛所在的牧场号
第$N+2$行到第$N+C+1$行: 每行有三个数:相连的牧场$A,B$,两牧场间距离$D(1\leqslant D\leqslant 255)$,当然,连接是双向的
输出格式
一行 输出奶牛必须行走的最小的距离和
样例数据
输入
- 3 4 5
- 2
- 3
- 4
- 1 2 1
- 1 3 5
- 2 3 7
- 2 4 3
- 3 4 5
输出
- 8
分析
枚举所有农场并对每个点都$SPFA$,求和取最小值
代码
- #include <bits/stdc++.h>
- #define Space putchar(' ')
- #define Enter puts("")
- #define MAXN 100010
- using namespace std;
- typedef long long ll;
- typedef double Db;
- inline ll Read()
- {
- ll Ans = 0;
- char Ch = getchar() , Las = ' ';
- while(!isdigit(Ch))
- {
- Las = Ch;
- Ch = getchar();
- }
- while(isdigit(Ch))
- {
- Ans = (Ans << 3) + (Ans << 1) + Ch - '0';
- Ch = getchar();
- }
- if(Las == '-')
- Ans = -Ans;
- return Ans;
- }
- inline void Write(ll x)
- {
- if(x < 0)
- {
- x = -x;
- putchar('-');
- }
- if(x >= 10)
- Write(x / 10);
- putchar(x % 10 + '0');
- }
- struct Edge
- {
- int Next , To , Dis;
- }E[MAXN];
- int Dis[MAXN] , Head[MAXN] , Count;
- inline void Add_Edge(int u , int v , int d)
- {
- E[++Count].Dis = d;
- E[Count].To = v;
- E[Count].Next = Head[u];
- Head[u] = Count;
- }
- int n , p , c , Start;
- int G[MAXN];
- queue <int> Q;
- bool Visit[MAXN];
- inline void SPFA()
- {
- memset(Visit , false , sizeof(Visit));
- for(int i = 1; i <= p; i++)
- Dis[i] = MAXN;
- Dis[Start] = 0;
- Q.push(Start);
- Visit[Start] = true;
- while(!Q.empty())
- {
- int u = Q.front();
- Q.pop();
- Visit[u] = false;
- for(int i = Head[u]; i; i = E[i].Next)
- {
- int v = E[i].To;
- if(Dis[v] > Dis[u] + E[i].Dis)
- {
- Dis[v] = Dis[u] + E[i].Dis;
- if(!Visit[v])
- {
- Q.push(v);
- Visit[v] = true;
- }
- }
- }
- }
- }
- int main()
- {
- n = Read() , p = Read() , c = Read();
- for(int i = 1; i <= n; i++)
- G[i] = Read();
- for(int i = 1; i <= c; i++)
- {
- int u = Read() , v = Read() , d = Read();
- Add_Edge(u , v , d);
- Add_Edge(v , u , d);
- }
- int MIN = 999999999;
- for(int i = 1; i <= p; i++)
- {
- Start = i;
- SPFA();
- int Ans = 0;
- for(int j = 1; j <= n; j++)
- Ans += Dis[G[j]];
- MIN = min(MIN , Ans);
- }
- Write(MIN);
- return 0;
- }
P1828 [USACO3.2]香甜的黄油 Sweet Butter的更多相关文章
- 洛谷P1828 香甜的黄油 Sweet Butter
P1828 香甜的黄油 Sweet Butter 241通过 724提交 题目提供者JOHNKRAM 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 我的SPFA为什么TLE.. 为 ...
- P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小
P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...
- 【香甜的黄油 Sweet Butter】
[香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...
- [最短路]P1828 香甜的黄油 Sweet Butter
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- P1828 香甜的黄油 Sweet Butter
对于这道洛谷ac而我整了一下午的codevs的题,我也是很绝望啊. 原因是队列数组开小了我勒个去???我说STL怎么能过 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧 ...
- [LUOGU] P1828 香甜的黄油 Sweet Butter
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- P1828 香甜的黄油 Sweet Butter (spfa)
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- 洛谷 题解 P1828 【香甜的黄油 Sweet Butter】
潇洒の开始 第一步:食用头文件和定义变量, 变量干什么用的说的很清楚 #include<iostream> #include<cstdio> #include<cstri ...
- 洛谷 P1828 【香甜的黄油 Sweet Butter】
这道题应该就是模板题了吧qwq. 统计每一个牧场的放糖的情况,选择最优的即可 有亿点水的绿题. #include <bits/stdc++.h> using namespace std; ...
随机推荐
- [CTF]Brainfuck/Ook!编码
[CTF]Brainfuck/Ook!编码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_408 ...
- (3) arm 指令
跳转指令1.1 B 跳转指令 B{cond} label 说明:如果条件cond满足,arm处理器将立即跳转到label指定的地址处继续执行.1.2 BL 带链接的跳转指令 BL{cond} labe ...
- ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(上)
快速上手多人游戏服务器开发.后续会基于 Google Agones,更新相关 K8S 运维.大规模快速扩展专用游戏服务器的文章.拥抱️原生 Cloud-Native! 快速开始 在开始之前,让我们确保 ...
- InnoDB解决幻读的方案——LBCC&MVCC
最近要在公司内做一次技术分享,思来想去不知道该分享些什么,最后在朋友的提示下,准备分享一下MySQL的InnoDB引擎下的事务幻读问题与解决方案--LBCC&MVCC.经过好几天的熬夜通宵,终 ...
- DLL注入技术(输入法注入)
输入法注入原理 IME输入法实际就是一个dll文件(后缀为ime),此dll文件需要导出必要的接口供系统加载输入法时调用.我们可以在此ime文件的DllMain函数的入口通过调用LoadLibrary ...
- Windows进程间通讯(IPC)----信号量
线程同步内核对象 操作系统进行进程间同步是利用信号量机制.对于windows系统而言,可以利用一些内核对象进行线程同步,因为这些内核对象可以命名并且属于系统内核,所以可以支持不同进程间的线程同步进而实 ...
- Visual Lab Online —— 事后分析
项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:事后分析 事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件使得编写简 ...
- python文件对象几种操作模式区别——文件操作方法详解
文件对象的字节模式/b模式(以utf-8编码为例) 读操作 写操作 指针操作 ASCII字节 返回bytes/字节类型的Ascii 写入bytes类型字节 例如:b'This is ascii' 使用 ...
- 搭建LAMP环境部署Ecshop电商网站
实战-部署Ecshop电商网站 实验环境 Centos7 ip:192.168.121.17 一.关闭防火墙和selinux [root@localhost ~]# systemctl stop fi ...
- 四大浏览器JavaScript性能/硬件加速测试
四大浏览器JavaScript性能/硬件加速测试 出处:快科技 2010-09-19 10:52:59 人气: 27925 次 作者:萧萧 编辑:萧萧[爆料] 评论(42) 收藏文章 新 ...