题意简叙:

FarmerFarmerFarmer JohnJohnJohn有B头奶牛(1&lt;=B&lt;=25000)(1&lt;=B&lt;=25000)(1<=B<=25000),有N(2∗B&lt;=N&lt;=50000)N(2*B&lt;=N&lt;=50000)N(2∗B<=N<=50000)个农场,编号1−N1-N1−N,有M(N−1&lt;=M&lt;=100000)M(N-1&lt;=M&lt;=100000)M(N−1<=M<=100000)条双向边,第i条边连接农场RiR_iRi​和Si(1&lt;=Ri&lt;=N;1&lt;=Si&lt;=N)S_i(1&lt;=R_i&lt;=N;1&lt;=S_i&lt;=N)Si​(1<=Ri​<=N;1<=Si​<=N),该边的长度是Li(1&lt;=Li&lt;=2000)L_i(1&lt;=L_i&lt;=2000)Li​(1<=Li​<=2000)。居住在农场PiP_iPi​的奶牛A(1&lt;=Pi&lt;=N)A(1&lt;=P_i&lt;=N)A(1<=Pi​<=N),它想送一份新年礼物给居住在农场Qi(1&lt;=Qi&lt;=N)Q_i(1&lt;=Q_i&lt;=N)Qi​(1<=Qi​<=N)的奶牛B,但是奶牛A必须先到FJ(居住在编号1的农场)那里取礼物,然后再送给奶牛B。你的任务是:奶牛A至少需要走多远的路程?

题目分析:

不难看出,这就是一道单元最短路的裸题

我们可以首先用dijkstra单源最短路跑出1到所有点之间的最短路径,然后每问一次就调用一次即可,具体见代码。

代码:

#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
#define pa pair<int,int>
#define maxn 100010
priority_queue<pa,vector<pa>,greater<pa> > q;
struct edge
{
int val,to;
};
int n,m,s,dis[maxn];
bool vis[maxn];
vector<edge>e[maxn];
int main()
{
int b;
scanf("%d%d%d",&n,&m,&b);
s=1;
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
edge tmp;
tmp.to=y;
tmp.val=z;
e[x].push_back(tmp);
tmp.to=x;
tmp.val=z;
e[y].push_back(tmp);//注意这里一定要存储双向边
}
//start
for(int i=1;i<=n;i++)
{
dis[i]=2147483647;//初始化
} dis[s]=0;
q.push(make_pair(0,s));
while(q.empty()==0)
{
int x=q.top().second;
q.pop();
if(vis[x]==1)
continue;
vis[x]=1;
for(int i=0;i<e[x].size();i++)
{
int y=e[x][i].to;
if(dis[x]+e[x][i].val<dis[y])
{
dis[y]=dis[x]+e[x][i].val;
q.push(make_pair(dis[y],y));
}
}
}
//finish
//以上的部分皆为dijkstra标准模板,写的还算比较正规,感谢趣的同志可以收藏一下。(逃
for(int i=1;i<=b;i++)
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",dis[x]+dis[y]);//直接调用
}
return 0;
}

[USACO10FEB]给巧克力Chocolate Giving的更多相关文章

  1. 洛谷 P2984 [USACO10FEB]给巧克力Chocolate Giving

    题目描述 Farmer John is distributing chocolates at the barn for Valentine's day, and B (1 <= B <= ...

  2. 洛谷——P2984 [USACO10FEB]给巧克力Chocolate Giving

    https://www.luogu.org/problem/show?pid=2984 题目描述 Farmer John is distributing chocolates at the barn ...

  3. 【luogu P2984 [USACO10FEB]给巧克力Chocolate Giving】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2984 练习SPFA,把FJ当做起点,求出到所有牛的最短路,再把两个牛的相加. #include <cs ...

  4. P2985 [USACO10FEB]吃巧克力Chocolate Eating

    P2985 [USACO10FEB]吃巧克力Chocolate Eating 题目描述 Bessie has received N (1 <= N <= 50,000) chocolate ...

  5. 洛谷——P2983 [USACO10FEB]购买巧克力Chocolate Buying

    P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...

  6. 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解

    P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...

  7. 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying

    购买巧克力Chocolate Buying 乍一看以为是背包,然后交了一个感觉没错的背包上去. #include <iostream> #include <cstdio> #i ...

  8. P2983 [USACO10FEB]购买巧克力Chocolate Buying

    题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...

  9. 【洛谷】P2983 [USACO10FEB]购买巧克力Chocolate Buying(贪心)

    题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...

随机推荐

  1. The specified type member 'IsLock' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

    var query = from C in objDb.GetDb<A>() join a in objDb.GetDb<B>().Where(m => m.Comput ...

  2. Devart Blog

    How to combine data from several sources using SQL and VirtualQueryhttp://blog.devart.com/how-to-com ...

  3. DELPHI美化界面(2009开始TPanel增加了ParentBackGround)

    1.透明问题. 要重新调整界面确实很麻烦,以前用DELPHI开发的界面都很土,和WEB真是没办法比.(我以前用的是DELPHI7),现在回想起来,DELPHI难做的原因是:没有透明控件.所有控件都是不 ...

  4. nodejs redis遇到的一个问题解决

    v ar redis = require("redis"), client = redis.createClient({host:'tc-arch-osp33.tc', port: ...

  5. 支付宝RSA签名之Delphi实现

    Delphi有个很大的问题就是,厂商的不作为(没有封装标准的Cipher类库),让大家自己造轮子. 今天的轮子就是RSA签名,由于Delphi没有封装Cipher类库,所以只的自己写了. 因为要在Fi ...

  6. 界面美化.CStatic控件的美化(好多系列文章)

    http://www.cnblogs.com/20090802/archive/2010/09/17/1829283.html 静态控件也是比较常用的控件,在VS开发环境中用的应该挺频繁的吧. 其实m ...

  7. 梭子鱼VS多备份 虽殊途却同归

    备份,对于企业来说,不仅是一个已经拥有多年历史的传统IT工作,还关系着企业自身的生死存亡.在云计算时代下,备份业务成为企业的必选项,已经成为云计算服务最为热门的领域之一.基于云的备份正在深刻改变着备份 ...

  8. HTML续

    HTML class属性 定义和用法 class 属性规定元素的类名(classname). class 属性大多数时候用于指向样式表中的类(class).不过,也可以利用它通过 JavaScript ...

  9. linux:清空文件内容与批量kill 指定程序名的进程

    1.常规的清空文件内容方法 1)使用 cat命令显示 /dev/null 的内容然后重定向输出到某个文件,来清空 $ cat /dev/null > filename 2)清空一个文件可以通过 ...

  10. 高并发IM系统架构优化实践

    互联网+时代,消息量级的大幅上升,消息形式的多元化,给即时通讯云服务平台带来了非常大的挑战.高并发的IM系统背后究竟有着什么样的架构和特性? 以上内容由网易云信首席架构师内部分享材料整理而成 相关阅读 ...