破坏掉一些路径,修复他的代价就是该路径的长度,没有破坏的路径,修复它的代价是0(*链式前向星建图)

SPFA求最短路:

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
int n,m,d;
int a,b;
int x,y;
int dis[];
bool vis[];
bool mark[][];
struct node
{
int x,y,w;
}edge[];
struct ask
{
int w;
int to;
int next;
}ed[];
int head [];
int tot =;
void add (int u,int v,int w)
{
ed[++tot].w=w;
ed[tot].to=v;
ed[tot].next=head[u];
head[u]=tot;
}
void SPFA(int s)
{
queue<int> q;
for(int i=;i<=n;i++){//初始化,
dis[i]=0x7fffffff;
vis[i]=;
}
q.push(s);//放入起点
dis[s]=;//自己到自己为0;
vis[s]=;
while(!q.empty()){
int u=q.front();
q.pop();vis[u]=;//弹出队首
for(int i=head[u];i;i=ed[i].next){
int v=ed[i].to; if(dis[v]>dis[u]+ed[i].w){
dis[v]=dis[u]+ed[i].w;
if(!vis[v]){
vis[v]=;
q.push(v);//重新放入;
}
}
}
}
}
int main()
{
scanf ("%d",&n);
scanf ("%d",&m);
for (int i = ;i <= m;i++)
{
scanf ("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].w);
}
scanf ("%d",&d);
for (int i = ;i <= d;i++)
{
scanf ("%d%d",&x,&y);
mark[x][y]=;
mark[y][x]=;
}
scanf ("%d%d",&a,&b);
for (int i = ;i <= m;i++)
{
if (mark[edge[i].x][edge[i].y]==)
{
add(edge[i].x,edge[i].y,edge[i].w);
add(edge[i].y,edge[i].x,edge[i].w);
}
else
{
add(edge[i].x,edge[i].y,);
add(edge[i].y,edge[i].x,);
}
}
SPFA(a);
cout<<dis[b]<<endl;
return ;
}

SPFA--P3905 道路重建的更多相关文章

  1. P3905 道路重建

    P3905 道路重建我一开始想错了,我的是类似kruskal,把毁坏的边从小到大加,并且判断联通性.但是这有一个问题,你可能会多加,就是这条边没用,但是它比较小,你也加上了.居然还有10分,数据也是水 ...

  2. 洛谷 P3905 道路重建 题解

    P3905 道路重建 题目描述 从前,在一个王国中,在\(n\)个城市间有\(m\)条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有\(d\)条道路被破坏了.国王想 ...

  3. 洛谷——P3905 道路重建

    P3905 道路重建 题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现 ...

  4. P1359 租用游艇 && P3905 道路重建 ------Floyd算法

    P1359 租用游艇   原题链接https://www.luogu.org/problemnew/show/P1359 P3905 道路重建   原题链接https://www.luogu.org/ ...

  5. 洛谷P3905 道路重建

    题目:https://www.luogu.org/problemnew/show/P3905 分析: 此题是显然的最短路算法,只是看到一起删掉的一堆边感到十分棘手,而且还要求出的是最短添加边的总长度 ...

  6. 洛谷 P3905 道路重建

    题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B ...

  7. 【最短路】道路重建 @upcexam5797

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 小L的家乡最近遭遇了一场洪水,城市变得面目全非,道路也都被冲毁了.生活还要继续,于是市政府决定重建城市中的道路. 在洪水到来前,城市中共有n ...

  8. [JZOJ 5465] [NOIP2017提高A组冲刺11.9] 道路重建 解题报告 (e-dcc+树的直径)

    题目链接: http://172.16.0.132/senior/#main/show/5465 题目: 小X所居住的X国共有n个城市,有m条无向道路将其连接.作为一个统一的国家,X 城的任意两个城市 ...

  9. 【洛谷P1272】道路重建

    题目大意:给定一个 N 个节点的树,求至少剪掉多少条边才能使得从树中分离出一个大小为 M 的子树. 题解:考虑树形 dp,定义 \(dp[u][i][t]\) 为以 u 为根节点与前 i 个子节点构成 ...

随机推荐

  1. 防止SQL注入的登录页面

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/T ...

  2. Lamda简单使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. SqlServer查看锁表与解锁

    某些情况下,sqlserver的表会被锁住,比如某个会话窗口有数据一直没提交,窗口又没关闭,这时表就会被锁住 其他任何连接查询表数据时都不会返回 这时需要手工杀掉产生死锁的会话ID,才能恢复正常 查看 ...

  4. 015、MySQL取今天是第几季度,往后几个月是第几季度

    #取今天是第几季度 SELECT QUARTER( curdate( ) ); #取往后几个月是第几季度 , INTERVAL MONTH ) ); , INTERVAL MONTH ) ); , I ...

  5. 008、MySQL日期时间格式化输出

    #日期格式化 SELECT date_format( '2008/08/08 22:23:01', '%Y-%m-%d-%H--%i--%s' ); 不忘初心,如果您认为这篇文章有价值,认同作者的付出 ...

  6. CSS:导航栏下拉菜单模板

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8">      ...

  7. BAT 五路internet负载均衡

    一个网上下载的bat文件 也不记得从那里下载的了 记得似乎需要管理员权限运行 依稀记得测试有效 放在这里做个记录 @echo off echo. echo ╭─────────╮ echo ╭──── ...

  8. 十五、React:简单点餐实例:知识点,html解析写法

    一.功能 从首页列表点进去,转到详情页 列表.详情从Api获取 Api列表:http://a.itying.com/api/productlist 详情:http://a.itying.com/api ...

  9. NFS挂载共享文件夹

    修改rcS启动脚本,使开发板初始化完成,自动挂载共享文件夹 修改开发板ip,使之与虚拟机处于同一网段(二者可以互ping)     挂载虚拟机的共享文件夹     rcS 1 ifconfig eth ...

  10. VS2012 ffmpeg 没有定义的lrint

    在common.h #ifndef AVUTIL_COMMON_H#define AVUTIL_COMMON_H下添加 #define lrint(f) (f>=0?(int32_t)(f+(d ...