【题解】【BFS+dfs】

【图论题】

【通过分析题目,我们可得知改变边权实际就是在删边。那么,如果每次删一条边,那么就要重新跑最短路,这样必然会T】

【考虑离线处理,改删边位加边,看每次加一条边,有多少段最短路径会改变。】

【先求一个初始状态下的最短路径,然后,再把要删的边全部删去,再求一次最短路。然后开始加边,每加入一条边,就判断这条边是不是初始状态下的最短路径,如果是,那么,再从这条边的两个端点再向外扩展,看还影响几段路径。加边(u,v)更新,且dis[u]==d[u]&&dis[v]==d[u]+1&&d[v]!=dis[v]】

【最后求一个前缀和,输出】

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{int s,t,num;
}road[200010];
int a[800010],nxt[800010],p[100010],tot;
int dis[100010],dft[100010],ans[200010];
int n,m,q,nm[200010],cnt;
bool vis[100010],b[200010];
inline void add(int x,int y)
{tot++; a[tot]=y; nxt[tot]=p[x]; p[x]=tot;tot++; a[tot]=x; nxt[tot]=p[y]; p[y]=tot;
}
inline void bfs(int s,int dis[])
{memset(vis,0,sizeof(vis));queue<int>que;dis[s]=0; vis[s]=1; que.push(s);while(!que.empty()){int u=que.front(); que.pop();for(int i=p[u];i!=-1;i=nxt[i])if(dis[a[i]]>dis[u]+1){dis[a[i]]=dis[u]+1;if(!vis[a[i]]) vis[a[i]]=1,que.push(a[i]);}}
}
void dfs(int x,int fa)
{for(int i=p[x];i!=-1;i=nxt[i])if(a[i]!=fa&&dis[a[i]]==dft[x]+1&&dis[a[i]]!=dft[a[i]]) {dft[a[i]]=dft[x]+1; cnt++;dfs(a[i],x);}
}
int main()
{freopen("int.txt","r",stdin);int i,j;memset(b,1,sizeof(b));memset(p,-1,sizeof(p));memset(nxt,-1,sizeof(nxt));memset(dis,127/3,sizeof(dis));memset(dft,127/3,sizeof(dft));scanf("%d%d%d",&n,&m,&q);for(i=1;i<=m;++i){int x,y;scanf("%d%d",&x,&y);road[i].s=x; road[i].t=y; road[i].num=i;add(x,y);}bfs(1,dis); tot=0;memset(p,-1,sizeof(p));memset(nxt,-1,sizeof(nxt));for(i=1;i<=q;++i) scanf("%d",&nm[i]),b[nm[i]]=0;for(i=1;i<=m;++i)if(b[i]) add(road[i].s,road[i].t);bfs(1,dft);for(i=q;i>0;--i){int x=road[nm[i]].s,y=road[nm[i]].t;cnt=0;if(dis[x]==dft[x]&&dis[y]==dft[x]+1&&dft[y]!=dis[y]) cnt++,dft[y]=dft[x]+1,dfs(y,x);if(dis[y]==dft[y]&&dis[x]==dft[y]+1&&dft[x]!=dis[x]) cnt++,dft[x]=dft[y]+1,dfs(x,y);ans[i]=cnt; add(x,y);}for(i=2;i<=q;++i) ans[i]+=ans[i-1];for(i=1;i<=q;++i) printf("%d\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/lris-searching/p/9403002.html

【洛谷 P1710】地铁涨价(dfs+bfs)相关推荐

  1. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  2. 洛谷 P1710 地铁涨价 (dfs+bfs)

    地铁涨价 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地铁连接两个不同的站. 地铁计 ...

  3. 洛谷P1710地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  4. 洛谷 P1710 地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  5. 洛谷1710 地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  6. 洛谷 P1433 吃奶酪 dfs剪枝

    洛谷 P1433 吃奶酪 dfs剪枝 题解: dfs+剪枝,不过现在好像被卡时间了,第10个点过不了.. 代码如下: #include<iostream> #include<algo ...

  7. 洛谷 1144 最短路计数 bfs

    洛谷1144 最短路计数 传送门 其实这道题目的正解应该是spfa里面加一些处理,,然而,,然而,,既然它是无权图,,那么就直接bfs了,用一个cnt记录一下每一个点的方案数,分几种情况讨论一下转移, ...

  8. P1710 地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  9. 洛谷 - P1433 - 吃奶酪 - dfs

    https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs. 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常 ...

最新文章

  1. js 设计模式与继承学习
  2. 春泥棒(偷春人) — ヨルシカ(MV + 歌词、汉译、罗马音)
  3. 兰州2021高考一诊成绩查询,2021兰州中考"一诊"成绩分析结果查询
  4. POJ1155 TELE(树形DP)
  5. 关于非对称加密算法在不同系统间对接时的使用要点
  6. 一道Python面试题,设置一个动态变量名
  7. 安全开发Java:日志注入,并没那么简单
  8. 为什么 Java 进程使用的 RAM 比 Heap Size 大?​ | CSDN博文精选
  9. BZOJ 1087 SCOI2005 互不侵犯King 状压DP
  10. ekho--TTS语音引擎
  11. oracle 定时任务 每天执行,Oracle定时任务(定时执行某个SQL语句)
  12. linux 耳机驱动程序,TAS571XSW-LINUX
  13. MQ系列SpringBoot快速整合RabbitMQ
  14. python海龟绘图颜色_海龟绘图
  15. 成都Uber优步司机奖励政策(3月11日)
  16. 产品思维训练 | 常见的用户增长手段有哪些?
  17. 阿里云实践训练营第七天——Class6 NAS快速搭建个人网盘
  18. 用jacob为word表格设置边框线
  19. 由于找不到msvcp140.dll,无法继续执行代码。重新安装可能会解决此问题
  20. 如何实现一个转动的太极图

热门文章

  1. ESXI和vSphere的安装配置-实现一台电脑硬件虚拟化为两台
  2. 关于学校食堂工人的调查
  3. 如何设置共享文件夹?
  4. 【调参19】如何使用梯度裁剪(Gradient Clipping)避免梯度爆炸
  5. Centos安装python3并设为默认
  6. 华为ac配置radius认证服务器_华为无线控制器启用802.1X认证配置
  7. 大学一定要拿计算机证书吗,大学期间,一定要拿到这些证书,不要到了毕业才后悔...
  8. 2020h黑苹果 y7000p_拯救者Y7000黑苹果升级macOS 10.15.4分享
  9. 运维监控工具之商用软件篇
  10. Shell脚本采集基础监控项数据(含采集周期)