Codeforces Round #361 (Div. 2)B. Mike and Shortcuts【BFS】
2016-07-08 09:52
441 查看
没有考虑到问题的本质,自己最初写的是最暴力的搜索,其实只是对左右两点和最短路上的点有关系。
#include<bits/stdc++.h> using namespace std; const int N=200000+10; int n,a ,use ,ans ; vector<int>g ; int main() { while(~scanf("%d",&n)) { for(int i=0;i<=n;i++) g[i].clear(); for(int i=1;i<=n;i++) { scanf("%d",a+i); g[i].push_back(a[i]); if(i!=n) g[i].push_back(i+1); if(i!=1) g[i].push_back(i-1); } memset(ans,0xff,sizeof(ans)); queue<int>q; q.push(1); ans[1]=0; while(!q.empty()) { int k=q.front(); q.pop(); for(int i=0;i<g[k].size();i++) { int y=g[k][i]; if(ans[y]==-1||ans[y]>ans[k]+1) { ans[y]=ans[k]+1; q.push(y); } } } for(int i=1;i<=n;i++) printf("%d ",ans[i]); printf("\n"); } return 0; }
相关文章推荐
- DropdownList绑定的两种方法
- ptrace应用系列-基础知识
- 抛弃jQuery,拥抱原生JavaScript
- 那些容易忽略的事(1) -变量与运算符+
- 获取崩溃日志
- php 字符串的连接、分割,数组、include require
- 羊皮卷-选择的力量(二)
- ios检测网络状态改变
- Unique Binary Search Trees
- Java实现邮箱激活验证
- 关于BOM
- 删除system/app下的apk
- Node Install
- hdu 5056 Boring count(尺取法)
- 这可能是史上最全的CSS自适应布局总结教程
- 合并数组
- 简易抽屉实现
- String str="abc" 与 String str = new String("abc")区别
- ABAP一个不错的博客
- SqlServer 认证之包含数据库