CF543B Destroying Roads 枚举 + 思维 + BFS
Code:
#include <bits/stdc++.h>
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 3002
using namespace std;
queue<int>Q;
vector<int>G[maxn];
int n,m,s1,t1,l1,s2,t2,l2;
int vis[maxn],d[maxn][maxn];
void bfs(int s) {
memset(vis,0,sizeof(vis));
d[s][s]=0,vis[s]=1,Q.push(s);
while(!Q.empty()) {
int u=Q.front(); Q.pop();
for(int i=0;i<G[u].size();++i) {
int v=G[u][i];
if(!vis[v]) {
vis[v]=1,d[s][v]=d[s][u]+1;
Q.push(v);
}
}
}
}
int main() {
// setIO("input");
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i) {
int a,b;
scanf("%d%d",&a,&b);
G[a].push_back(b), G[b].push_back(a);
}
memset(d,0x3f,sizeof(d));
for(int i=1;i<=n;++i) d[i][i]=0;
for(int i=1;i<=n;++i) bfs(i);
scanf("%d%d%d%d%d%d",&s1,&t1,&l1,&s2,&t2,&l2);
if(d[s1][t1] > l1 || d[s2][t2] > l2) printf("-1\n");
else {
int ans=d[s1][t1] + d[s2][t2];
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j) {
if(d[s1][i]+d[i][j]+d[j][t1]<=l1 && d[s2][i]+d[i][j]+d[j][t2]<=l2)
{
ans=min(ans, d[s1][i]+d[s2][i]+d[i][j]+d[j][t1]+d[j][t2]);
}
}
swap(s1,t1);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j) {
if(d[s1][i]+d[i][j]+d[j][t1]<=l1 && d[s2][i]+d[i][j]+d[j][t2]<=l2)
{
ans=min(ans, d[s1][i]+d[s2][i]+d[i][j]+d[j][t1]+d[j][t2]);
}
}
printf("%d\n",m-ans);
}
return 0;
}
CF543B Destroying Roads 枚举 + 思维 + BFS的更多相关文章
- CF543B Destroying Roads 题解
看到没有题解就贡献一波呗 分析: 这题其实就是想让我们求一个图中两条最短路的最短(好把更多的边删掉). 我们先考虑一条最短路,别问我我怎么会的显然,就是s和t跑个最短路再用n-就行. 然后就是两条喽! ...
- Codeforces 543.B Destroying Roads
B. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- B. Destroying Roads
Destroying Roads 题目链接 题意 n个点,m条边每两个点之间不会有两个相同的边,然后给你两个起s1,s2和终点t1,t2; 求删除最多的边后满足两个s1到t1距离\(<=l1\) ...
- CF Destroying Roads (最短路)
Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- Codeforces Round #302 (Div. 2) D. Destroying Roads 最短路
题目链接: 题目 D. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #302 (Div. 1) B - Destroying Roads
B - Destroying Roads 思路:这么菜的题我居然想了40分钟... n^2枚举两个交汇点,点与点之间肯定都跑最短路,取最小值. #include<bits/stdc++.h> ...
- Codeforces Round #302 (Div. 2) D - Destroying Roads 图论,最短路
D - Destroying Roads Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544 ...
- [CF544] D. Destroying Roads
D. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 危险系数(枚举点+bfs)--------蓝桥备战系列
标题:危险系数 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定 ...
随机推荐
- 通过vue-router实现组件间的跳转
三.通过VueRouter来实现组件之间的跳转提供了3种方式实现跳转:①直接修改地址栏中的路由地址 <!doctype html> <html> <head> &l ...
- adb 性能测试(内存)
内存测试: 1.使用数据线将手机与电脑连接: 2.手机打开待测APP,即打开进程: 3.打开cmd命令,获取设备列表:输入adb devices; 4.进入该设备的shell环境,输入:adb -s ...
- 使用JS区分客户端
之前遇到,上司这样一个指示. 他说:“你看,能不能帮我解决一下,ipad自带的,键盘问题.” 就是我们做的这个项目,是一个 web项目,然后 要求 电脑端 和 平板都可以访问.在日期输入框的地方.他们 ...
- Java与C#不同
1.C#方法定义可以有默认参数,而Java则不支持该方式. C#方法定义 public void ShowMessage(string text,string orderId="" ...
- jenkins自动化测试Email Extension邮件模板 及可用参数TEST_COUNTS ,FAILED_TESTS详细说明
先列出模板内容: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <t ...
- 2019CSP-S游记(?)
认识我的人都知道,我懒得写算法和模拟赛的博客,但是游记就不一样了,它比较好玩. Day0 中午随便收拾了下就坐高铁出发了,一个小时左右就到南昌了,随后坐公交,再步行到宾馆安置(也没多远). 宾馆离学校 ...
- netstat -anop|more 查看网络队列
nux下netstat --timers / -o详解及keepalive相关 第一列,一般有一下几种状态: keepalive - #表示是keepalive的时间计时 on - #表示是重发(re ...
- A-问题收益率
问题: 在金融中,我们有时会用内部收益率IRR来评价项目的投资财务效益,它等于使得投资净现值NPV等于0的贴现率.换句话说,给定项目的期数T.初始现金流CF0和项目各期的现金流CF1, CF2, …, ...
- CQRS框架(nodejs的DDD开发落地框架)初识感想
CQRS是啥?DDD又是啥? 这两个概念其实没什么神秘的,当然此文章中的这两个概念以曾老师的课程为准(关于CQRS和DDD的标准概念,google上已经很多了,不再赘述.) DDD(Domain Dr ...
- linux安装mysql8(完整图文笔记)
基本命令 安装 : yum install mysql-community-server 启动 : service mysqld start/restart 停止 : service mysqld s ...