JZOJ5959【NOIP2018模拟11.8A组】铁路运输

news/2024/10/17 14:16:39/

Description





Input

Output

Data Constraint

 

题意:给出一个边权为1的无向图,q次操作,将一条边的边权变为2,每次操作后询问有多少个点的通往1的最短路比所有操作前的最短路小。 

 

无向图上的边权修改问题不好做,我们可以考虑将其转换为最短路图。假设我们构建出了一个最短路图,如果我们将这个图中的边变为2,有一个显然的结论这条边一定不能再走了,实际上就是一个删边的操作。进一步地思考,如果有一个时刻一个点可以通往1,那么最短路不变,反之最短路就改变了,所以我们实际上要求出的是每一个点在什么时刻与1断开。 

 

对于最短路图,这是一个有向无环图,考虑DP,设f[i]表示i节点断开的时间,将每一条边赋为其断开的时间,那么i节点断开的时间就是它通往1号节点的所有路径上的最小时间的最大值。 

 

我们从1号节点往下转移即可。 

 

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define maxn 100010
#define maxm 400020
#define maxd 200020
using namespace std;int n,m,q,i,j,k,x,y;
int em,e[maxm],ec[maxm],nx[maxm],ls[maxn],num[maxm][2];
int dis[maxn],d[maxd],vis[maxn],ans[maxm];
int Em,E[maxm],Ec[maxm],Nx[maxm],Ls[maxn],f[maxn];void spfa(){int t=0,w=1,i,j,x,y;for(i=1;i<=n;i++) dis[i]=1e9,vis[i]=0;vis[1]=1,dis[1]=0;f[1]=q+1;d[1]=1;while (t<w){t=(t+1)%maxd,x=d[t]; vis[x]=0;for(i=ls[x];i;i=nx[i]) if (dis[x]+1<dis[e[i]]){dis[e[i]]=dis[x]+1;if (!vis[e[i]]){vis[e[i]]=1;w=(w+1)%maxd,d[w]=e[i];}}}
}
void bfs(){int t=0,w=1,i,j,x,y;for(i=1;i<=n;i++) vis[i]=0;d[1]=1; vis[1]=1;while (t<w){x=d[++t],vis[x]=1;for(i=Ls[x];i;i=Nx[i]) {y=E[i];f[y]=max(f[y],min(f[x],Ec[i]));if (!vis[y]) d[++w]=y,vis[y]=1;}}
}
int main(){freopen("train.in","r",stdin);freopen("train.out","w",stdout);scanf("%d%d%d",&n,&m,&q);for(i=1;i<=m;i++){scanf("%d%d",&x,&y);em++; e[em]=y; nx[em]=ls[x]; ls[x]=em; num[i][0]=em; ec[em]=q+1;em++; e[em]=x; nx[em]=ls[y]; ls[y]=em; num[i][1]=em; ec[em]=q+1;}for(i=1;i<=q;i++){scanf("%d",&k);ec[num[k][0]]=ec[num[k][1]]=i;}spfa();for(x=1;x<=n;x++){for(i=ls[x];i;i=nx[i]) if (dis[x]+1==dis[e[i]])Em++,E[Em]=e[i],Nx[Em]=Ls[x],Ls[x]=Em,Ec[Em]=ec[i];}bfs();	for(i=1;i<=n;i++) ans[f[i]]++;for(i=1;i<=q;i++) ans[i]=ans[i-1]+ans[i];for(i=1;i<=q;i++) printf("%d\n",ans[i]);
}

 


http://www.ppmy.cn/news/798641.html

相关文章

专利检索及分析模拟登陆(python)

登陆程序&#xff1a;#!/usr/bin/env python # -*- coding: UTF-8 -*-import requests import time import base64codeurl http://www.pss-system.gov.cn/sipopublicsearch/portal/login-showPic.shtmlproxies {http: http://140.205.222.3:80,https: http://117.127.0.196:8…

Ubuntu: scp命令使用及Permission denied错误解决方案

scp命令介绍 scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 Ubuntu 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp local_file remote_usernameremote_ip:remote_folder scp /Users/X.pem root192.168.1.247:/usr/local/ssl Permission…

【Java|基础篇】面向对象三大特性之继承(上)

文章目录 1. 前言2. 问题提出3. 什么是继承4. 继承的特点 1. 前言 继承是面向对象三大特性之一. Java的继承也是很复杂. 本篇文章先帮助大家理解继承的概念 2. 问题提出 先来看这两个类: Student类: public class Student {private String name;private int age;private S…

单反相机的照片不见了如何恢复

转眼又到了春暖花开的日子了&#xff0c;而且春夏季节&#xff0c;我们的节假日又多&#xff0c;正好出去踏春。我和女友都攒了年假没有修&#xff0c;又接了一个法定假日&#xff0c;打算去云南走一趟。结果旅途中还发生了一键关于照片恢复的插曲。 我们两个都是旅游发烧友&am…

索尼相机里的照片要怎么恢复

索尼相机是去日本的时候购买的&#xff0c;都说日本的数码产品好&#xff0c;也不知道我的运气是好还是不好&#xff0c;虽然有机会去日本&#xff0c;但是却没有大钱去购买过于高端的产品&#xff0c;刚好缺一个数码相机&#xff0c;于是就购置了一个。日本的数码相机牌子不少…

sony相机照片恢复|Mac电脑sony相机照片误删了怎么恢复?

索尼照相机是索尼公司的优质产品之一&#xff0c;索尼照相机走的是高端时尚前卫路线&#xff0c;CCD技术先进&#xff0c;便携中的高像素&#xff0c;防抖&#xff0c;自动捕捉头像&#xff0c;而且索尼照相机还支持笑脸快门&#xff0c;可以捕捉精彩的一瞬间。因此受到了广大摄…

索尼相机卡照片误删丢失恢复图文教程

相机卡很多摄影爱好者都会多备用几个&#xff0c;也是相机拍照录视频必不可少的东西&#xff0c;那么大家有没有遇到过相机卡照片不小心删除或者在电脑上意外格式化呢&#xff1f;小编就遇到过&#xff0c;然后还是很快的借助工具恢复回来了&#xff0c;那么现在小编就把如何使…

Django4.0+使用rest_framework_jwt的问题

问题描述 python版本&#xff1a;3.10 Django版本&#xff1a;4.1 djangorestframework-jwt版本&#xff1a;1.11.0 在写jwt认证功能时&#xff0c;发现run的时候会报以下错误 from django.utils.translation import ugettext as _ ImportError: cannot import name ugettext…