脑洞+暴力。

因为边权是1,所以bfs一下,O(n^2)求任意两点间最短路,再枚举。

ans最大是\(dis_{s1,t1}+dis_{s2,t2}\)

再考虑有公共边的情况,一定存在两个点 u, v ,最后留下的边为(s1,u),(s2,u),(u,v),(v,t1),(v,t2)或是 (s1,u),(t2,u),(u,v),(v,t1),(v,s2) 五组点之间最短路。

如图:



因此代码如下。

#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
int n,m;
const int N=3005;
int dis[N][N],s1,s2,t1,t2,l1,l2,ans=0x3f3f3f3f,ecnt,head[N];
bool vis[N];
struct Edge{
int to,nxt;
}e[N*N<<1];
void add(int bg,int ed){
e[++ecnt].nxt=head[bg];
e[ecnt].to=ed;
head[bg]=ecnt;
}
void bfs(int x) {
dis[x][x]=0;
memset(vis,0,sizeof vis);
queue<int>q;
q.push(x);vis[x]=1;
while(!q.empty()){
int u=q.front();q.pop();
for(int i=head[u];i;i=e[i].nxt) {
int v=e[i].to;
if(dis[x][v]>dis[x][u]+1) {
dis[x][v]=dis[x][u]+1;
if(!vis[v]) q.push(v),vis[v]=1;
}
}
}
}
int main() {
scanf("%d%d",&n,&m);
int a,b,tp=m;
memset(dis,0x3f,sizeof dis);
while(m--) {
scanf("%d%d",&a,&b);add(a,b);add(b,a);
}
scanf("%d%d%d%d%d%d",&s1,&t1,&l1,&s2,&t2,&l2);
for(int i=1;i<=n;i++) bfs(i);
if(dis[s1][t1]>l1||dis[s2][t2]>l2) {puts("-1");return 0;}
ans=dis[s1][t1]+dis[s2][t2];
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
if(dis[s1][i]+dis[j][t1]+dis[i][j]<=l1&&dis[i][j]+dis[j][t2]+dis[s2][i]<=l2&&dis[s1][i]+dis[j][t1]+dis[i][j]>=0&&dis[i][j]+dis[j][t2]+dis[s2][i]>=0)
ans=min(ans,dis[s1][i]+dis[s2][i]+dis[i][j]+dis[j][t1]+dis[j][t2]);
if(dis[s1][i]+dis[i][j]+dis[j][t1]<=l1&&dis[i][j]+dis[t2][i]+dis[j][s2]<=l2&&dis[s1][i]+dis[i][j]+dis[j][t1]>=0&&dis[i][j]+dis[t2][i]+dis[j][s2]<=l2>=0)
ans=min(ans,dis[s1][i]+dis[t2][i]+dis[i][j]+dis[j][t1]+dis[j][s2]);
}
}
cout<<tp-ans;
}

[CodeForces] 543B Destroying Roads的更多相关文章

  1. Codeforces 543B Destroying Roads(最短路)

    题意: 给定一个n个点(n<=3000)所有边长为1的图,求最多可以删掉多少条边后,图满足s1到t1的距离小于l1,s2到t2的距离小于l2. Solution: 首先可以分两种情况讨论: 1: ...

  2. Codeforces Round #302 (Div. 2) D - Destroying Roads 图论,最短路

    D - Destroying Roads Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544 ...

  3. Codeforces Round #302 (Div. 2) D. Destroying Roads 最短路

    题目链接: 题目 D. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input ...

  4. Codeforces 543.B Destroying Roads

    B. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. Codeforces Round #302 (Div. 1) B - Destroying Roads

    B - Destroying Roads 思路:这么菜的题我居然想了40分钟... n^2枚举两个交汇点,点与点之间肯定都跑最短路,取最小值. #include<bits/stdc++.h> ...

  6. CF Destroying Roads (最短路)

    Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  7. Codeforces 835 F. Roads in the Kingdom

    \(>Codeforces\space835 F. Roads in the Kingdom<\) 题目大意 : 给你一棵 \(n\) 个点构成的树基环树,你需要删掉一条环边,使其变成一颗 ...

  8. [CF544] D. Destroying Roads

    D. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. B. Destroying Roads

    Destroying Roads 题目链接 题意 n个点,m条边每两个点之间不会有两个相同的边,然后给你两个起s1,s2和终点t1,t2; 求删除最多的边后满足两个s1到t1距离\(<=l1\) ...

随机推荐

  1. 用于检测进程的shell脚本

    用于检测进程的shell脚本 2010-07-07 10:38:08|  分类: Centos |字号 订阅 脚本一: #!/bin/sh program=XXXX     #进程名 sn=`ps - ...

  2. Python中图像的缩放 resize()函数的应用

    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 参数说明: src - 原图 dst - 目标图像.当参数ds ...

  3. VirtualBox扩展包安装教程|VirtualBox扩展增强包怎么安装

    VirtualBox是一款功能强大的免费虚拟机软件,一般我们安装VirtualBox后要安装扩展增强包,VirtualBox扩展包包含USB2.0和USB3.0控制等支持功能,如果没有装,在使用过程中 ...

  4. xml解析之----DOM解析

    DOM模型(documentobject model) •DOM解析器在解析XML文档时,会把文档中的全部元素.依照其出现的层次关系.解析成一个个Node对象(节点). •在dom中.节点之间关系例如 ...

  5. 【分享】GEARS of DRAGOON 1+2【日文硬盘版】[带全CG存档&amp;攻略+SSG改动+打开存档补丁]

    冒险者们哟.寻找龙秘玉吧--! ninetail的最新作,是使用丰富多彩的技能·道具探索迷宫的3D迷宫RPG! 存在着骑士和神官的架空世界常见的职业为首的13种职业.超过数百种的道具的登场! 和伙伴一 ...

  6. hdoj 5092 Seam Carving 【树塔DP变形 + 路径输出】 【简单题】

    Seam Carving Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot ...

  7. java 递归实现删除或查询指定目录下的全部文件

    /** * 递归列举盘符下的全部文件的名称,如E:\HeartIsland * * @author HeartIsland * */ public class FileListDemo { /** * ...

  8. 2016.02.23,英语,《Vocabulary Builder》Unit 01

    Bell:来源于拉丁语,含义为war.fight,其中Bellona [bә'lәunә]是罗马女战神的名字,她的丈夫是战神Mars.antebellum: [ˌænti'beləm] adj. 战前 ...

  9. poj--3630--Phone List(字典树+前缀判断)

    Phone List Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit St ...

  10. intelliJ idea运行新的test功能时,报错:class not found "....." empty test suite

    转自:https://blog.csdn.net/u012560212/article/details/75037578