codeforces 1272E(反向建边+多源bfs)
时间:2022-07-28
本文章向大家介绍codeforces 1272E(反向建边+多源bfs),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意描述
思路
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<long,long> PLL;
typedef pair<char,char> PCC;
typedef long long ll;
const int N=2*1e5+10;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
int n,a[N],d[N];
vector<int> g[N];
struct node{
int odd_d,even_d,u;
}Node[N];
void bfs(){
queue<int> q;
rep(i,1,n+1) q.push(i);
while(q.size()){
int t=q.front();q.pop();
rep(i,0,sz(g[t])){
int v=g[t][i];
if(Node[t].u&1){
if(Node[v].odd_d>1 || Node[v].even_d>Node[t].even_d+1){
Node[v].odd_d=1;
if(Node[v].even_d>Node[t].even_d+1) Node[v].even_d=Node[t].even_d+1;
q.push(v);
}
}else{
if(Node[v].even_d>1 || Node[v].odd_d>Node[t].odd_d+1){
Node[v].even_d=1;
if(Node[v].odd_d>Node[t].odd_d+1) Node[v].odd_d=Node[t].odd_d+1;
q.push(v);
}
}
}
}
}
void solve(){
cin>>n;
rep(i,1,n+1){
Node[i].odd_d=Node[i].even_d=INF;
cin>>Node[i].u;
if(i+Node[i].u<=n) g[i+Node[i].u].PB(i);
if(i-Node[i].u>=1) g[i-Node[i].u].PB(i);
}
bfs();
rep(i,1,n+1){
if(Node[i].u&1) cout<<(Node[i].even_d==INF ? -1 : Node[i].even_d)<<' ';
else cout<<(Node[i].odd_d==INF ? -1 : Node[i].odd_d)<<' ';
}
cout<<endl;
}
int main(){
IOS;
//freopen("test.in","r",stdin);
//freopen("test.out","w",stdout);
//int t;cin>>t;
//while(t--)
solve();
return 0;
}
- JavaWeb(一)Servlet中乱码解决与转发和重定向的区别
- Java魔法堂:四种引用类型、ReferenceQueue和WeakHashMap
- Javascript中数组的使用
- JavaWeb(一)Servlet中的request与response
- 数据库18456错误怎么解决
- JavaWeb(一)Servlet中的ServletConfig与ServletContext
- 语义化HTML:p、h1-6、q、blockquote、hr、address、code、pre、var、cite、dfn和samp
- Win7系统 IIS 调试ASP(aspcmsgbk25) 错误号:3706 提示 “未找到提供程序 该程序可能未正确安装”解决办法
- 普通文件和数据库存储的对比
- JavaWeb(一)之细说Servlet
- jQuery Tools Scrollable使用的限制
- OOAD-设计模式(一)概述
- 导出表结构(数据字典)
- 简单的Ajax封装
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 搭建hadoop集群虚拟机试验环境
- PLSQL-简单的语句块及变量的定义
- Python 技术篇-使用PIL库等比例压缩、缩小图片
- linux 安装并配置zsh
- 听音乐不过瘾?自制一个音乐播放器!【附带函数源码】
- Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法
- Linux 文件隐藏权限
- 还在用print()查找错误?日志消息这顿排骨它不香嘛?
- CNS图表复现02—Seurat标准流程之聚类分群
- Python 技术篇-莉莉机器人api调用方法,实例演示。免费的机器人
- Hugo Travis 完结!
- 【Python】秀儿!两行代码制作你的专属动态二维码
- Windows 技术篇-网卡物理(MAC)地址查看方法
- Go使用工厂方法实例结构体
- Java交互界面实现计算器开发设计【附函数源码】