博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj:3392: [Usaco2005 Feb]Part Acquisition 交易
阅读量:4313 次
发布时间:2019-06-06

本文共 1418 字,大约阅读时间需要 4 分钟。

Description

    奶牛们接到了寻找一种新型挤奶机的任务,为此它们准备依次经过N(1≤N≤50000)颗行星,在行星上进行交易.为了方便,奶牛们已经给可能出现的K(1≤K≤1000)种货物进行了由1到K的标号.由于这些行星都不是十分发达.没有流通的货币,所以在每个市场里都只能用固定的一种货物去换取另一种货物.    奶牛们带着一种上好的饲料从地球出发,希望进行最少的交易,最终得到所需要的机器.饲料的标号为1,所需要的机器的标号为K.如果任务无法完成,输出-1.

Input

    第1行是两个数字N和K.
    第2到N+1行,每行是两个数字Ai和Bi,表示第i颗行星愿意提供Ai为得到Bi.

Output

    第1行输出最小交换次数

Sample Input

6 5
1 3
3 2
2 3
3 1
2 5
5 4

Sample Output

4
 
 
bfs不解释……
#include
#include
#include
using namespace std;struct na{ int y,ne; na(){ ne=0; }};int n,k,a,l[1001],r[1001],x,y,dis[1001],i;na b[50001];queue
q;char cc;int read(){ int a=0; cc=getchar(); while(cc<'0'||cc>'9') cc=getchar(); while(cc>='0'&&cc<='9') a=a*10+cc-48,cc=getchar(); return a;}int main(){ n=read();k=read(); for (i=1;i<=n;i++){ x=read();y=read(); if (l[x]==0) l[x]=i;else b[r[x]].ne=i; r[x]=i;b[i].y=y; } for (i=1;i<=k;i++) dis[i]=1001; q.push(1);dis[1]=1; while(!q.empty()){ int p=q.front(); for (i=l[p];i;i=b[i].ne){ if (dis[b[i].y]==1001){ if (b[i].y==k){ printf("%d",dis[p]+1); return 0; } dis[b[i].y]=dis[p]+1; q.push(b[i].y); } } q.pop(); } printf("-1");}

转载于:https://www.cnblogs.com/Enceladus/p/5037490.html

你可能感兴趣的文章
poj3368 RMQ
查看>>
“此人不存在”
查看>>
github.com加速节点
查看>>
解密zend-PHP凤凰源码程序
查看>>
python3 序列分片记录
查看>>
Atitit.git的存储结构and 追踪
查看>>
atitit 读书与获取知识资料的attilax的总结.docx
查看>>
B站 React教程笔记day2(3)React-Redux
查看>>
找了一个api管理工具
查看>>
C++——string类和标准模板库
查看>>
zt C++ list 类学习笔记
查看>>
git常用命令
查看>>
探讨和比较Java和_NET的序列化_Serialization_框架
查看>>
1、jQuery概述
查看>>
数组比较大小的几种方法及math是方法
查看>>
FTP站点建立 普通电脑版&&服务器版
查看>>
js 给一段代码,给出运行后的最终结果的一些综合情况、
查看>>
webservice 详解
查看>>
js自动补全实例
查看>>
VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“
查看>>