[Usaco2005]Part Acquisition
来源:互联网 发布:投资白银如何看数据 编辑:程序博客网 时间:2024/06/05 04:18
Description
The cows have been sent on a mission through space to acquire a new milking machine for their barn. They are flying through a cluster of stars containing N (1 <= N <= 50,000) planets, each with a trading post. The cows have determined which of K (1 <= K <= 1,000) types of objects (numbered 1..K) each planet in the cluster desires, and which products they have to trade. No planet has developed currency, so they work under the barter system: all trades consist of each party trading exactly one object (presumably of different types). The cows start from Earth with a canister of high quality hay (item 1), and they desire a new milking machine (item K). Help them find the best way to make a series of trades at the planets in the cluster to get item K. If this task is impossible, output -1.
有n个星球,开始你的手中有1号物品,每个星球会帮你把物品a换成物品b,问你要得到物品m最少要换几次,如果怎么样都不能换到,输出-1
Input
- Line 1: Two space-separated integers, N and K. * Lines 2..N+1: Line i+1 contains two space-separated integers, a_i and b_i respectively, that are planet i’s trading trading products. The planet will give item b_i in order to receive item a_i.
Output
- Line 1: One more than the minimum number of trades to get the milking machine which is item K (or -1 if the cows cannot obtain item K).
Sample Input
6 5 //6个星球,希望得到5,开始时你手中有1号物品.
1 3 //1号星球,帮你把1号物品换成3号
3 2
2 3
3 1
2 5
5 4
Sample Output
4
这题裸的最短路,什么都不用想
#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define inf 0x3f3f3f3fusing namespace std;typedef long long ll;typedef unsigned int ui;typedef unsigned long long ull;inline int read(){ int x=0,f=1;char ch=getchar(); for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1; for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0'; return x*f;}inline void print(int x){ if (x>=10) print(x/10); putchar(x%10+'0');}const int N=5e4;int pre[N+10],now[N+10],child[N+10];int h[N+10],dis[N+10];bool vis[N+10];int tot,n,End,root=1;void join(int x,int y){pre[++tot]=now[x],now[x]=tot,child[tot]=y;}void SPFA(int x){ int head=0,tail=1; memset(dis,63,sizeof(dis)); h[1]=x,vis[x]=1,dis[x]=1; while (head!=tail){ if (++head>N) head=1; int Now=h[head]; for (int p=now[Now],son=child[p];p;p=pre[p],son=child[p]) if (dis[son]>dis[Now]+1){ dis[son]=dis[Now]+1; if (!vis[son]){ if (++tail>N) tail=1; h[tail]=son,vis[son]=1; } } vis[Now]=0; }}int main(){ n=read(),End=read(); for (int i=1,x,y;i<=n;i++) x=read(),y=read(),join(x,y); SPFA(root); dis[End]!=inf?printf("%d\n",dis[End]):printf("-1\n"); return 0;}
- bzoj1674 [Usaco2005]Part Acquisition
- 1674: [Usaco2005]Part Acquisition
- [Usaco2005]Part Acquisition
- bzoj 3392: [Usaco2005 Feb]Part Acquisition 交易 最短路
- bzoj 1674: [Usaco2005]Part Acquisition(最短路)
- poj 2457 Part Acquisition
- poj 2457 Part Acquisition
- POJ2457 Part Acquisition
- POJ2457 Part Acquisition
- POJ part acquisition
- poj2457 Part Acquisition
- poj 2457 Part Acquisition-dijkstra
- 【POJ】2457 Part Acquisition bfs
- POJ Part Acquisition 2457 dijkstra
- POJ 2457 Part Acquisition(最短路)
- POJ 2457 Part Acquisition 最短路径
- poj 2457 Part Acquisition 最短路spfa
- POJ 2457 Part Acquisition (Dijkstra + 记录路径)
- 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)
- poj 3080 Blue Jeans
- 鼠标乱动问题
- iptables案例:iptables搭建路由器
- 联想无线键盘使用方法
- [Usaco2005]Part Acquisition
- 设计模式-策略模式
- JavaScript 操纵元素属性
- VS2013+QT5.9.0 环境下 编译 **.ui 报错
- 用virtualenv建立多个Python独立开发环境
- Python可视化库matplotlib.pyplot里contour与contourf的区别
- Java生成随机密码(包含大小写字母和数字)
- 复制web项目时注意
- 第八周项目四C/C++对称矩阵的压缩存储及基本运算