题目
题意

思路
代码
const int N = 2e5+10;
int a[N];
vector<int> edge[N];
int dist[N];
int ans[N];
void bfs(vector<int> &st,vector<int> &ed)
{
queue<int> q;
memset(dist,0x3f,sizeof dist);
for(auto x:st)
{
q.push(x);
dist[x] = 0;
}
while(q.size())
{
int u = q.front();q.pop();
for(auto v:edge[u])
{
if(dist[v] != INF)continue;
dist[v] = dist[u] + 1;
q.push(v);
}
}
for(auto x:ed)
{
if(dist[x] == INF)ans[x] = -1;
else ans[x] = dist[x];
}
}
void solve()
{
int n;cin >> n;
vector<int> odd,even;
for(int i = 1;i <= n;i ++)
{
cin >> a[i];
int l = i - a[i],r = i + a[i];
if(l >= 1)edge[l].push_back(i);
if(r <= n)edge[r].push_back(i);
if(a[i]&1)odd.push_back(i);
else even.push_back(i);
}
bfs(odd,even);
bfs(even,odd);
for(int i = 1;i <= n;i ++)cout << ans[i] << " ";
}
signed main()
{
solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具