[USACO07FEB]银牛派对Silver Cow Party
题目简叙:
寒假到了,N头牛都要去参加一场在编号为X(1≤X≤N)的牛的农场举行的派对(1≤N≤1000),农场之间有M(1≤M≤100000)条有向路,每条路长Ti(1≤Ti≤100)。
每头牛参加完派对后都必须回家,无论是去参加派对还是回家,每头牛都会选择最短路径,求这N头牛的最短路径(一个来回)中最长的一条路径长度。
分析:
其实这道题的考点就是单元最短路径和单终点最短路径。
单终点最短路径其实就可以把所有的边反过来,直接就转换为单源最短路径了。
于是此题的核心就是跑两遍dijkstra或spfa了(本人偏好dijkstra)。
还有就是注意变量不要重复
代码:
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
struct edge
{
	int to,val;
};
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q,w;
vector<edge> e[1005],f[1005];
int n,m,s;
int dis[1005],his[1005],vis[1005],visit[1005];
void dijkstra_zheng()//正常的单元最短路,也就是牛们散伙时的最短路
{
	for(int i=1;i<=n;i++)
	{
		dis[i]=2147483647;
	}
	dis[s]=0;
	q.push(make_pair(0,s));
	while(!q.empty())
	{
		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));
			}
		}
	}
}
void dijkstra_dao()//反过来的最短路,也就是牛们去开派对的最短路
{
	for(int i=1;i<=n;i++)
	{
		his[i]=2147483647;
	}
	his[s]=0;
	w.push(make_pair(0,s));
	while(!w.empty())
	{
		int x=w.top().second;
		w.pop();
		if(visit[x]==1)
		continue;
		visit[x]=1;
		for(int i=0;i<f[x].size();i++)
		{
			int y=f[x][i].to;
			if(his[x]+f[x][i].val<his[y])
			{
				his[y]=his[x]+f[x][i].val;
				w.push(make_pair(his[y], y));
			}
		}
	}
}
int main()
{
	scanf("%d%d%d",&n,&m,&s);
	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;
		f[y].push_back(tmp);//倒着再存一遍
	}
	dijkstra_zheng();
	dijkstra_dao();
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		if(his[i]+dis[i]>ans)
		{
			ans=his[i]+dis[i];
		}//求最大值就行了
	}
	printf("%d",ans);
}
码风较丑陋,请多包涵
[USACO07FEB]银牛派对Silver Cow Party的更多相关文章
- 洛谷——P1821 [USACO07FEB]银牛派对Silver Cow Party
		P1821 [USACO07FEB]银牛派对Silver Cow Party 题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ... 
- 洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party 题解
		P1821 [USACO07FEB]银牛派对Silver Cow Party 题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ... 
- P1821 [USACO07FEB]银牛派对Silver Cow Party
		题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ... 
- 洛谷P1821 [USACO07FEB]银牛派对Silver Cow Party
		题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ... 
- luogu P1821 [USACO07FEB]银牛派对Silver Cow Party
		题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ... 
- 「Luogu 1821」[USACO07FEB]银牛派对Silver Cow Party
		更好的阅读体验 Portal Portal1: Luogu Portal2: POJ Description One cow from each of N farms \((1 \le N \le 1 ... 
- [USACO07FEB]银牛派对Silver Cow Party---最短路模板题
		银牛排队 对于我这种蒟蒻来说,还是不要跑一次单元最短路.跑两次好写呀(- ̄▽ ̄)- 而题目中是有向图.如果如果按照题意进行最短路的话.就会出现一个单终点最短路和一个单起点最短路 对于单起点自然就是套模 ... 
- 洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party
		银牛派对 正向建图+反向建图, 两边跑dijkstra,然后将结果相加即可. 反向建图以及双向建图的做法是学习图论的必备思想. #include <iostream> #include & ... 
- 【luogu P1821 [USACO07FEB]银牛派对Silver Cow Party】 题解
		题目链接:https://www.luogu.org/problemnew/show/P1821 反向多存一个图,暴力跑两遍 #include <cstdio> #include < ... 
随机推荐
- [转载]关于Java reference的一篇博文
			不再额外的叨叨了,直接附上原地址: https://community.oracle.com/people/enicholas/blog/2006/05/04/understanding-weak-r ... 
- 判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMembership与AdministratorsGroup进行比较,和Delphi的那个例子还有点不一样)
			在Win7下(Vista以上的...)有时某些操作就是会让人郁闷 开启了UAC的话,得以管理员权限运行才不会出现Access is denied... 但是,程序又不是非得什么时候都用那破管理员权限的 ... 
- Python时间戳的一些使用
			Python时间戳的一些使用 为什么写下这篇文档? 由于我本身是做Python爬虫的,在爬取网站的过程当中,会遇到形形色色的验证码,目前对于自己而言,可能简单的验证码可以进行自己识别 发现大多数的网站 ... 
- Docker容器化部署Python应用
			1. 简介 Docker是目前主流IT公司广泛接受和使用的,用于构建.管理和保护它们应用程序的工具. 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应 ... 
- 信鸽推送在springboot中出现jar包冲突问题
			错误提示 : java.lang.NoSuchMethodError: org.json.JSONObject.put(Ljava/lang/String;Ljava/util/Collection; ... 
- 02 我的第一个Javascript代码
			02-第一个JavaScript代码 在页面中,我们可以在body标签中放入<script type=”text/javascript”></script>标签对儿,< ... 
- CQRS之旅——旅程7(增加弹性和优化性能)
			旅程7:增加弹性和优化性能 到达旅程的终点:最后的任务. "你不能飞的像一只长着鹪鹩翅膀的老鹰那样."亨利·哈德逊 我们旅程的最后阶段的三个主要目标是使系统对故障更具弹性,提高UI ... 
- Java NIO 学习笔记(六)----异步文件通道 AsynchronousFileChannel
			目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ... 
- AJAX异步提交form表单
			记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ... 
- 超级实用的表格树控件--QtTreePropertyBrowser
			目录 一.源码下载 二.代码编译 1.intersect函数替换为intersected 2.移除UnicodeUTF8 3.QtGui模块拆分 4.Q_TYPENAME错误 5.qVariantVa ... 
