codeforces257 div2 D最短路条数
题意:
给一个无向图,总共有 n个点,m+k条边,给定点所连的k条边可以选择删除
问最多删除多少条可以保持该定点到其他点的最短路不变
题解:
从定点出发做单元最短路
首先如果定点到某个点的最短路小于 可删边的长度,则肯定可以删除
此外如果最短路与可删边长度相等,而且最短路条数大于1,肯定也可以删除
所以在做最短路的时候需要记录一下条数
//同时还会有重边,也要注意处理
ps...这题sxbk的把普通的spfa 都卡了。。加了slf优化才过,据说dij可以轻松过。。不过我没试2333
以后写spfa还是都写deque版的吧= =!
代码:
- #include <stdio.h>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- #include <queue>
- using namespace std;
- const int inf =;
- struct edge
- {
- int from,to,w,next;
- }e[];
- int head[];
- int vis[];
- int dist[];
- int vi[];
- int hs[];
- int n,m,t;
- void add(int i,int j,int w)
- {
- e[t].from=i;
- e[t].to=j;
- e[t].w=w;
- e[t].next=head[i];
- head[i]=t++;
- return ;
- }
- void spfa(int s)
- {
- deque <int> q;
- for(int i=;i<=n;i++)
- dist[i]=inf;
- memset(vis,false,sizeof(vis));
- q.push_back(s);
- dist[s]=;
- while(!q.empty())
- {
- int u=q.front();
- q.pop_front();
- vis[u]=false;
- for(int i=head[u];i!=-;i=e[i].next)
- {
- int v=e[i].to;
- if(dist[v]>=dist[u]+e[i].w)
- {
- dist[v]=dist[u]+e[i].w;
- if(dist[v]==hs[v])
- vi[v]++;
- else if(dist[v]<hs[v])
- vi[v]=;
- if(!vis[v])
- {
- vis[v]=true;
- if(!q.empty()&&dist[v]<dist[q.front()]) //spfa的slf优化
- q.push_front(v);
- else
- q.push_back(v);
- }
- }
- }
- }
- }
- int main()
- {
- int a,b,c,k;
- scanf("%d%d%d",&n,&m,&k);
- t=;
- memset(head,-,sizeof(head));
- while(m--)
- {
- scanf("%d%d%d",&a,&b,&c);
- add(a,b,c);
- add(b,a,c);
- }
- int ans=;
- while(k--)
- {
- scanf("%d%d",&b,&c);
- if(hs[b]==)
- {
- hs[b]=c;
- add(,b,c);
- add(b,,c);
- }
- else //处理重边
- {
- ans++;
- if(c<hs[b])
- {
- hs[b]=c;
- add(,b,c);
- add(b,,c);
- }
- }
- }
- spfa();
- for(int i=;i<=n;i++)
- {
- if(vi[i]>)
- ans++;
- }
- printf("%d\n",ans);
- return ;
- }
codeforces257 div2 D最短路条数的更多相关文章
- 紧急救援 L2-001 dijkstra 打印路径 最短路条数 权值
较为复杂的dijkstra 包含路径打印 最小路的条数 最小路径的情况下取最大权值 v0要是标记就会出错...? 有权值的题目 不能设置mp[i][i]为0 否则会无限加权 这题很有参考价值 ...
- 关于 最短路条数 和 边不可重复最短路条数问题 /hdu3599(边不可重复最短路)
原先一直在做一道省赛题,由于题意错误理解成球最短路条数,误打误撞敲了最短路条数,又发现hdu3599(多校)求边不可重复最短路条数.下面说说俩种问题解法: 最短路条数: 求一个图一共一几条最短路径,思 ...
- HDU 1142 A Walk Through the Forest (求最短路条数)
A Walk Through the Forest 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1142 Description Jimmy exp ...
- UVA - 12295 最短路(迪杰斯特拉)——求按对称路线最短路条数
题意: 给你一个n,然后给你一个n*n的正方形w[i][j],你需要找到一个从(1,1)点走到(n,n)点的最短路径数量.而且这个路径必须按照y=x对称 题解: 我们把左上角的点当作(0,0)点,右下 ...
- POJ 3463 最(次)短路条数
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9497 Accepted: 3340 Descr ...
- hdu3191+hdu1688(求最短路和次短路条数,模板)
hdu3191题意:求出次短路的长度和条数 #include<iostream> #include<cstdio> #include<cstring> #inclu ...
- POJ 3463 Sightseeing (次短路经数)
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions:10005 Accepted: 3523 Descr ...
- HDU 3191 次短路长度和条数
http://www.cnblogs.com/wally/archive/2013/04/16/3024490.html http://blog.csdn.net/me4546/article/det ...
- HDU 1688 Sightseeing 【输出最短路+次短路条数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1688 题目大意:给n个点,m条有向边.再给出起点s, 终点t.求出s到t的最短路条数+次短路条数. 思 ...
随机推荐
- C#中hashtable的赋值、取值、遍历、排序操作
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...
- Java基础知识强化30:String类之String的特点(String为什么是final)
1. String字符串特点: 一旦被赋值,字符串值就不能改变. 这里String是final修饰的,具有不可继承性. 2. 为什么String是final? 主要是为了"效率" ...
- LSI SAS 2208 配置操作
配置LSISAS2208 介绍LSISAS2208扣卡的配置方法. 2.1 登录CU界面 介绍登录LSISAS2208的CU配置界面的方法,以及CU界面的主要功能. 2.2 创建RAID 介绍创建RA ...
- Linux 系统运行级别
Linux运行级别从0-6,共7个. 0:关机.不能将系统缺省运行级别设置为0,否则无法启动. 1:单用户模式,只允许root用户对系统进行维护. 2:多用户模式,但不能使用NFS(相当于Win ...
- TreeView绑定无限层级关系类
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind_TV(TreeView1.Nodes); ...
- poj 1595
#include <iostream> #define N 10010 using namespace std; int a[N],b[N]; int prime(int a) { int ...
- 简单水池&&迷宫问题
#include <iostream> #include <stdio.h> #include <cstring> using namespace std; int ...
- SQL Server 分组后取Top N
SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿 ...
- preventDefault() 方法 取消掉与事件关联的默认动作
前几天写的 响应键盘的图片切换 中, 键盘总是让浏览器滚动,为了取消掉默认的事件,使用了 preventDefault() 方法 定义和用法 preventDefault() 方法取消事件的默认动作. ...
- XML Schema (1)
XML Schema 是基于 XML 的 DTD 替代者. XML Schema 描述 XML 文档的结构. XML Schema 语言也称作 XML Schema 定义(XML Schema Def ...