uva 1599 Ideal Path (两次bfs)
来源:互联网 发布:qq游戏网络 编辑:程序博客网 时间:2024/04/25 22:53
分析:两次bfs,第一次从n到1逆着来,找到每一个点对应的d[]值。第二次从1出发,走的每一步要满足d[u]==d[v]+1,如果满足这个的时,有多个选择,则选择最小的color值走,
一直走到最后即可。
AC代码:
#include<cstdio>#include<cstring>#include<queue>#include<vector>#include<algorithm>#define INF 2000000000using namespace std;const int maxn=1e5+10;int n,m;struct Edges{int to,w;Edges(int to=0,int w=0):to(to),w(w){}}; vector<Edges>g[maxn];int d[maxn];int vis[maxn];int ans[maxn];void bfs(int s){memset(d,-1,sizeof(d));queue<int>q;q.push(s);d[s]=0;while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<g[u].size();i++){Edges e = g[u][i];int v=e.to;if(d[v]!=-1)continue;d[v]=d[u]+1; q.push(v);}}}void bfs2(int s){memset(vis,0,sizeof(vis));memset(ans,0,sizeof(ans));queue<int>q;q.push(s);vis[s]=1;while(!q.empty()){ int u=q.front();q.pop();if(u==n)return ;int Min=INF;for(int i=0;i<g[u].size();i++){Edges e = g[u][i];if(d[u]==d[e.to]+1){Min=min(Min,e.w);}}int tmp=d[1]-d[u];if(ans[tmp]==0) ans[tmp]=Min;else ans[tmp]=min(ans[tmp],Min);for(int i=0;i<g[u].size();i++){Edges e = g[u][i];if(!vis[e.to]&&e.w==ans[tmp]&&d[u]==d[e.to]+1){q.push(e.to);vis[e.to]=1;}} }}int main(){while(scanf("%d%d",&n,&m)==2){for(int i=0;i<m;i++){int from,to,w;scanf("%d%d%d",&from,&to,&w);g[from].push_back(Edges(to,w));g[to].push_back(Edges(from,w));}bfs(n);bfs2(1);printf("%d\n%d",d[1],ans[0]);for(int i=1;i<d[1]-d[n];i++){printf(" %d",ans[i]);}printf("\n");for(int i=0;i<maxn;i++)g[i].clear();//注意清0 !! }return 0;}
0 0
- uva 1599 Ideal Path (两次bfs)
- UVa 1599 - Ideal Path <两次BFS>
- UVA 1599 Ideal Path 【两次BFS+贪心】 (好题)
- UVa 1599 - Ideal Path(BFS)
- 例题6-20 UVa1599 Ideal Path(两次BFS)
- uva 1599 - Ideal Path
- UVa 1599 Ideal Path
- Uva - 1599 - Ideal Path
- UVa 1599 Ideal Path
- UVa 1599 Ideal Path
- UVA 1599 Ideal Path
- uva UVA - 1599 Ideal Path
- UVA 1599 Ideal Path (理想路径)
- UVA 1599(p173)----Ideal Path
- uva 1599 ideal path(好题)——yhx
- uva 1599 ideal path(好题)——yhx
- UVA 1599 Ideal Path【双向bfs+非简单图的最短路】
- 理想路径(Ideal Path,UVa 1599)
- dd命令测试
- C# Event事件
- 微信小程序的视图容器-- scroll-view
- AndroidStudio中导入Module的相关问题
- iOS开发给UITableView的单元格做一个类似于QQ和微信的侧滑露出删除按钮的思路
- uva 1599 Ideal Path (两次bfs)
- ip模拟工具modify headers
- 2017年,是否还应该在出路的选择上犹豫
- mybaits中的$和#区别及用法
- CentOS6.4下Mysql数据库的安装与配置
- 题解——Leetcode 526. Beautiful Arrangement 难度:Medium
- java链接redis
- Find All Anagrams in a String给定字符串s和非空字符串p,找出p中是s中点的所有子串
- simhash原理及使用