SPFA--P3905 道路重建
破坏掉一些路径,修复他的代价就是该路径的长度,没有破坏的路径,修复它的代价是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 道路重建的更多相关文章
- P3905 道路重建
P3905 道路重建我一开始想错了,我的是类似kruskal,把毁坏的边从小到大加,并且判断联通性.但是这有一个问题,你可能会多加,就是这条边没用,但是它比较小,你也加上了.居然还有10分,数据也是水 ...
- 洛谷 P3905 道路重建 题解
P3905 道路重建 题目描述 从前,在一个王国中,在\(n\)个城市间有\(m\)条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有\(d\)条道路被破坏了.国王想 ...
- 洛谷——P3905 道路重建
P3905 道路重建 题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现 ...
- P1359 租用游艇 && P3905 道路重建 ------Floyd算法
P1359 租用游艇 原题链接https://www.luogu.org/problemnew/show/P1359 P3905 道路重建 原题链接https://www.luogu.org/ ...
- 洛谷P3905 道路重建
题目:https://www.luogu.org/problemnew/show/P3905 分析: 此题是显然的最短路算法,只是看到一起删掉的一堆边感到十分棘手,而且还要求出的是最短添加边的总长度 ...
- 洛谷 P3905 道路重建
题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B ...
- 【最短路】道路重建 @upcexam5797
时间限制: 1 Sec 内存限制: 128 MB 题目描述 小L的家乡最近遭遇了一场洪水,城市变得面目全非,道路也都被冲毁了.生活还要继续,于是市政府决定重建城市中的道路. 在洪水到来前,城市中共有n ...
- [JZOJ 5465] [NOIP2017提高A组冲刺11.9] 道路重建 解题报告 (e-dcc+树的直径)
题目链接: http://172.16.0.132/senior/#main/show/5465 题目: 小X所居住的X国共有n个城市,有m条无向道路将其连接.作为一个统一的国家,X 城的任意两个城市 ...
- 【洛谷P1272】道路重建
题目大意:给定一个 N 个节点的树,求至少剪掉多少条边才能使得从树中分离出一个大小为 M 的子树. 题解:考虑树形 dp,定义 \(dp[u][i][t]\) 为以 u 为根节点与前 i 个子节点构成 ...
随机推荐
- 嵊州普及Day4T2
题意:有一个单行走廊,每回合第ai个展柜会冒出来一只鬼,右边尽头有一个人间大炮和向最左传送门(费用均1金币),你需要每回合将所有鬼交换展柜,全部至最右,问若从一到n所有回合结束是需多少金币可射死所有鬼 ...
- java程序题目解析
(选择一项) A: 不能有括号 B: C: 确定最后一位 D: 正确答案是 B 本题考查的是Java数组概念,数组下标是从零开始的,但是数据下标的总量和数据长度相同 (选择一项) A: B: 顺序不 ...
- 1_01_MSSQL课程_基础入门
0. 课程安排: 课程共7天课,前两天SQL基础,后面三天Ado.Net ,最后两天数据库高级进阶学习. 1.数据库的概念 ->数据库就是数据仓库. ->DBMS:数据库管理系统.SQLS ...
- PE文件结构体-IMAGE_FILE_HEADER
struct _IMAGE_FILE_HEADER { WORD Machine; //运行平台 WORD NumberOfSections; //文件的区块数目 DWORD TimeDateStam ...
- Docker 学习之镜像导入导出及推送阿里云服务器(三)
在前面两节里主要就是记录一些docker的基本的操作,包括搜索镜像,拉取镜像,根据镜像创建容器等等,在这一节主要就是记录Docker对于镜像文件的导入导出,及推送到阿里云再从阿里云获取镜像. 一.镜像 ...
- swagger获取
参考 https://www.jianshu.com/p/840320d431a1 https://www.cnblogs.com/luoluocaihong/p/7106276.html
- package报错
java类的第一行package 包路径 package报错 jdk版本不一致 或者jar包冲突
- 云时代架构阅读笔记十五——之前碰到的Java面试题
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- 采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)
问题: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序. 网上资料:{ finish()和system(0)都只能退出单个activity. ...
- C++代写,代写C++,C++程序代写,C++ assignment代写
C++代写,代写C++,C++程序代写 关于C++代写,我们的涉猎范围: C++数据结构.算法题目 C++操作系统os题目 C++网络编程networking题目 C++ Linux题目 C++ Wi ...