第一个bfs很快  但是我第一次做还用了结构体  这题完全不需要  反而导致了代码非常乱

输入:

一开始我是用m二维数组储存颜色  vector path来储存路径

但是二维数组的下标是不够用的   所以颜色也要存在vector里

直接放进去就行了  因为i已经对应好了  地几条路就是第几个颜色  值得学习!!

主要是卡在了有多个路径的颜色是一样的情况

先遍历一次找出最小的颜色  把颜色放进去

然后把该颜色的路径都加入队列即可

开了一个INF9999999不停wa    下次直接开INT_MAX即可

这题挺好的 值得学习!

#include<bits/stdc++.h>
using namespace std;
#define MAX 102400
int n;
int d[MAX];
int ans[MAX];
int vis[MAX];
vector<int>path[MAX],color[MAX];
void bfs(void)
{
queue<int>q;
q.push(n);
d[n]=;
while(!q.empty())
{
int u=q.front();q.pop();
if(u==)return;
for(int i=;i< path[u].size();i++)
{ int v=path[u][i];
if( d[v]==- )
{
q.push(v);
d[v]=d[u]+;
}
}
}
}
void bfs2(void)
{
queue<int>q;
q.push();
while(!q.empty())
{
int u=q.front();q.pop();
if(u==n)return;
int minc=INT_MAX;
for(int i=;i< path[u].size() ;i++)
{
int v=path[u][i];
if( d[u]==+d[ v ]&&color[u][i]<minc )
{
minc=color[u][i];
}
}
if(!ans[ d[u] ] || minc<=ans[d[u]] ) ans[ d[u] ]=minc;
else continue;
for(int i=;i<path[u].size();i++)
{
int v=path[u ][i];
if(!vis[v]&& d[u]==+d[ v ]&color[u][i]==minc )
{
q.push(v);
vis[v]=;
}
}
}
} int main()
{
int q;
while(scanf("%d%d",&n,&q)==)
{
for(int i=;i<MAX;i++){color[i].clear();path[i].clear();}
memset(d,-,sizeof(d));
memset(vis,,sizeof(vis));
memset(ans,,sizeof(ans));
while(q--)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
path[x].push_back(y);
path[y].push_back(x);
color[x].push_back(z);
color[y].push_back(z);
}
bfs();
bfs2();
printf("%d\n", d[]);
for(int i = d[]; i >= ; --i){
if(i==d[]) printf("%d", ans[i]);
else printf(" %d", ans[i]);
}
printf("\n");
}
return ;
}

6-20 Ideal Path uva1599的更多相关文章

  1. UVa1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)

    题目大意: 对于一个n个房间m条路径的迷宫(Labyrinth)(2<=n<=100000, 1<=m<=200000),每条路径上都涂有颜色,颜色取值范围为1<=c&l ...

  2. UVa1599,Ideal Path

      说实话,这题参考的: http://blog.csdn.net/u013382399/article/details/38227917 倒着BFS就把我难住了T T,原来这样倒着BFS一遍,遍历完 ...

  3. UVA-1599 Ideal Path(双向BFS)

    题目: 给一个n个点m条边(2≤m≤100000, 1≤m≤200000)的无向图,每条边上都涂有一种颜色(用1到1000000000表示).求从结点1到结点n的一条路径, 使得经过的边数尽量少,在此 ...

  4. UVA 1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)

    https://vjudge.net/problem/UVA-1599 给一个n个点m条边(2<=n<=100000,1<=m<=200000)的无向图,每条边上都涂有一种颜色 ...

  5. 【例题 6-20 UVA - 1599】Ideal Path

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 逆向做一遍bfs. 得到终点到某个点的最短距离. 这样,我们从起点顺序的时候. 就能知道最短路的下一步是要走哪里了. 这样,我们从起 ...

  6. uva 1599 ideal path(好题)——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGYAAAODCAYAAAD+ZwdMAAAgAElEQVR4nOy9L8/0ypH/Pa8givGiyC

  7. UVa 1599 (字典序最小的最短路) Ideal Path

    题意: 给出一个图(图中可能含平行边,可能含环),每条边有一个颜色标号.在从节点1到节点n的最短路的前提下,找到一条字典序最小的路径. 分析: 首先从节点n到节点1倒着BFS一次,算出每个节点到节点n ...

  8. UVA 1599 Ideal Path(bfs1+bfs2,双向bfs)

    给一个n个点m条边(<=n<=,<=m<=)的无向图,每条边上都涂有一种颜色.求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小.一对 ...

  9. UVA 1599 Ideal Path (HDU 3760)

    两次bfs: 第一次bfs逆向搜索,得到每个点到终点的最短距离,找出最短路:第二次bfs根据最短距离可以选择满足条件的最短路. 注意!碰到这种很大数据量的题目一定要记得用scanf,printf 输入 ...

随机推荐

  1. centos7 网卡命名

    CentOS6 及之前以太网网卡进行顺序命名的:多网卡如:eth0,eth1 依次.Centos7 则不同,命名规则默认是基于固件.拓扑.位置信息来分配.一.网卡命名的策略systemd对网络设备的命 ...

  2. 自定义滤镜 ColorMatrixFilter

    var url:URLRequest = new URLRequest("Koala.jpg"); var l:Loader = new Loader(); l.contentLo ...

  3. Synchronized和lock的区别和用法

    一.synchronized和lock的用法区别 (1)synchronized(隐式锁):在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要 ...

  4. python(七) Python中单下划线和双下划线

    Python中单下划线和双下划线: 一.分类 (1).以单下划线开头,表示这是一个保护成员,只有类对象和子类对象自己能访问到这些变量. 以单下划线开头的变量和函数被默认是内部函数,使用from mod ...

  5. Freemarker导出带图片的word

    1.新建一doc文档

  6. centOS6.4 extundelete工具恢复rm -rf 删除的目录[转]

    原文:http://www.cnblogs.com/patf/p/3368765.html PS:补充下,我在fedora 19上运行的时候遇到的一个问题: 1 [root@localhost ext ...

  7. 基于Python的机器学习实战:KNN

    1.KNN原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应 ...

  8. Django中全局Context处理器

    1.模板标签和模板变量 模板标签在{% %}中定义: {% if is_logged_in %} Thanks for logging in! {% else %} Please log in. {% ...

  9. ASP.NET Core Identity 实战(4)授权过程

    这篇文章我们将一起来学习 Asp.Net Core 中的(注:这样描述不准确,稍后你会明白)授权过程 前情提要 在之前的文章里,我们有提到认证和授权是两个分开的过程,而且认证过程不属于Identity ...

  10. linux系统下安装tomcat及配置

    一.下载TOMCAT压缩包 apache-tomcat-6.0.44-client.zip 或 apache-tomcat-7.0.69.tar.gz 点击进入官网:http://tomcat.apa ...