UVA 1599 Ideal Path】的更多相关文章

两次bfs: 第一次bfs逆向搜索,得到每个点到终点的最短距离,找出最短路:第二次bfs根据最短距离可以选择满足条件的最短路. 注意!碰到这种很大数据量的题目一定要记得用scanf,printf 输入输出!!! ps:uva和hdu中数据输入有些出入...(uva中没有输入T...) #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <a…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGYAAAODCAYAAAD+ZwdMAAAgAElEQVR4nOy9L8/0ypH/Pa8givGiyC…
给一个n个点m条边(<=n<=,<=m<=)的无向图,每条边上都涂有一种颜色.求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小.一对结点间可能有多条边,一条边可能连接两个相同结点.输入保证结点1可以达到结点n.颜色为1~^9的整数. 第一次bfs逆向搜索,得到每个点到终点的最短距离,找出最短路:第二次bfs根据最短距离可以选择满足条件的最短路. #pragma comment(linker, "/STACK:1024000000…
题意: 给出n和m,n代表有n个城市.接下来m行,分别给出a,b,c.代表a与b之间有一条颜色为c的道路.求最少走几条道路才能从1走到n.输出要走的道路数和颜色.保证颜色的字典序最小. 分析: bfs,先倒搜一次,求出每个点到终点的距离d[i].然后从起点走,每次走到新点保证d-1且颜色最小. 代码: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #…
题目连接和描述以后再补 这题思路很简单但还真没少折腾,前后修改提交了七八次才AC...(也说明自己有多菜了).. 注意问题: 1.看清楚原题的输入输出要求,刚了书上的中文题目直接开撸,以为输入输出都是只有一个情况的,所以一开始没加循环导致了WA 2. bfs要解决重复入队问题,在bfs1中由于一开始的方法导致重复入队,提交后TLE 3. 将d数组初始化为一个较大的整数 INF = 0x5ffffff ,然后找最小颜色的时候比INF小就修改,提交后WA,原因可能为测试数据中存在颜色号码真的为INF…
题解:给一个1e5个点2e5条边,每个边有一个值,让你输出一条从1到n边的路径使得:条数最短的前提下字典序最小. 题解:bfs一次找最短路(因为权值都是1,不用dijkstra),再bfs一次存一下路径,4个月前的代码(忘了为什么搞得那么麻烦),wa了两天,今天看了一下题目,看了一下代码,改了一下初始化数组,直接过了orz #define _CRT_SECURE_NO_WARNINGS #include<cstring> #include<cctype> #include<c…
题意:给出n个点,m条边的无向图,每条边有一种颜色,求从结点1到结点n颜色字典序最小的最短路径. 析:首先这是一个最短路径问题,应该是BFS,因为要保证是路径最短,还要考虑字典序,感觉挺麻烦的,并不好做,事实用两次BFS, 第一次是倒序BFS,目的是得到从结点 i 到结点n的最短距离,然后再从第一个点开始到最后一个,要保证在查找时,每经过一点要让d值恰好减少1, 直到终点,这也是一个BFS,因为这个字典序在某个结点是一样的,所以是两个BFS,我超时了好几次,因为少写了一个vis, 一定要细心,…
题意:给出n个点,m条边,每条边上涂有一个颜色,求从节点1到节点n的最短路径,如果最短路径有多条,要求经过的边上的颜色的字典序最小 紫书的思路:第一次从终点bfs,求出各个节点到终点的最短距离, 第二次bfs从起点沿着每到达一个节点d[]减少1来走,按照颜色的字典序最小的路径来走 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack&g…
https://vjudge.net/problem/UVA-1599 给一个n个点m条边(2<=n<=100000,1<=m<=200000)的无向图,每条边上都涂有一种颜色.求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小.一对结点可能有多条边,一条边可能连接相同的结点(自环).输入保证结点1可以到达结点n.颜色是1~10^9的整数. 分析: 从题目中我们可以看出,题目中的无向图是可以出现自环和重边的,自环我们可以在输入的时候检查并排…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 逆向做一遍bfs. 得到终点到某个点的最短距离. 这样,我们从起点顺序的时候. 就能知道最短路的下一步是要走哪里了. 这样,我们从起点也开始做一遍bfs. 然后根据逆序的bfs得知下一步该往哪些点走. 每次优先走最小的字典序边即可. 多个最小的,就每个都走一遍试试. 6 6 1 2 3 1 3 3 2 4 5 3 5 1 4 6 1 5 6 100 ans = 3->1->100 ↑↑这组数据可以hack网上好多人(>=…