题目链接

\(Destroying\)

分析

又是变形了的最短路

我们可以考虑哪些道路必须被保留

然后枚举两个起点到终点重复的道路

考虑公合法用这些道路就可以了

\(Code\)

  1. #include<cstdio>
  2. #include<queue>
  3. #include<cstring>
  4. #include<iostream>
  5. using namespace std;
  6. const int N = 3005;
  7. int n , m , s1 , t1 , l1 , s2 , t2 , l2;
  8. int tot , h[N] , dis[N][N] , vis[N];
  9. struct edge{int to , nxt;}e[2 * N];
  10. struct node{
  11. int id , d;
  12. bool operator < (node c) const {return d > c.d;}
  13. };
  14. priority_queue<node> Q;
  15. inline void add(int x , int y){e[++tot] = edge{y , h[x]} , h[x] = tot;}
  16. void dijkstra(int s)
  17. {
  18. while (!Q.empty()) Q.pop();
  19. memset(vis , 0 , sizeof vis);
  20. Q.push(node{s , dis[s][s] = 0});
  21. while (!Q.empty())
  22. {
  23. node now = Q.top(); Q.pop();
  24. int u = now.id;
  25. if (vis[u]) continue;
  26. vis[u] = 1;
  27. for(register int i = h[u]; i; i = e[i].nxt)
  28. {
  29. int v = e[i].to;
  30. if (dis[s][u] + 1 < dis[s][v])
  31. {
  32. dis[s][v] = dis[s][u] + 1;
  33. Q.push(node{v , dis[s][v]});
  34. }
  35. }
  36. }
  37. }
  38. int main()
  39. {
  40. scanf("%d%d" , &n , &m);
  41. int x , y;
  42. for(register int i = 1; i <= m; i++)
  43. scanf("%d%d" , &x , &y) , add(x , y) , add(y , x);
  44. scanf("%d%d%d%d%d%d" , &s1 , &t1 , &l1 , &s2 , &t2 , &l2);
  45. memset(dis , 0x3f3f3f3f , sizeof dis);
  46. for(register int i = 1; i <= n; i++) dijkstra(i);
  47. if (dis[s1][t1] > l1 || dis[s2][t2] > l2)
  48. {
  49. printf("-1");
  50. return 0;
  51. }
  52. int ans = dis[s1][t1] + dis[s2][t2];
  53. for(register int i = 1; i <= n; i++)
  54. for(register int j = 1; j <= n; j++)
  55. {
  56. x = dis[s1][i] + dis[i][j] + dis[j][t1];
  57. y = dis[s2][i] + dis[i][j] + dis[j][t2];
  58. if (x <= l1 && y <= l2)
  59. ans = min(ans , x + y - dis[i][j]);
  60. y = dis[t2][i] + dis[i][j] + dis[j][s2];
  61. if (x <= l1 && y <= l2)
  62. ans = min(ans , x + y - dis[i][j]);
  63. }
  64. printf("%d" , m - ans);
  65. }

Destroying Roads的更多相关文章

  1. CF Destroying Roads (最短路)

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

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

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

  3. Codeforces 543.B Destroying Roads

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

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

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

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

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

  6. [CF544] D. Destroying Roads

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

  7. B. Destroying Roads

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

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

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

  9. Codeforces543 B. Destroying Roads

    传送门:>Here< 题意:给出一张无向图(边权为1),并给出两对起点和终点以及距离:s1,t1,l1; s2,t2,l2; 要求删除尽量多的边,使得dis(s1,t1)<=l1, ...

  10. [CodeForces] 543B Destroying Roads

    脑洞+暴力. 因为边权是1,所以bfs一下,O(n^2)求任意两点间最短路,再枚举. ans最大是\(dis_{s1,t1}+dis_{s2,t2}\) 再考虑有公共边的情况,一定存在两个点 u, v ...

随机推荐

  1. PyTorch Geometric Temporal 介绍 —— 数据结构和RGCN的概念

    Introduction PyTorch Geometric Temporal is a temporal graph neural network extension library for PyT ...

  2. 【翻译】rocksdb调试指引

    rocksdb调试指引 翻译自官方wiki:https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide 转载请注明出处:https:// ...

  3. 【企业流行新数仓】Day01:新版本对比、业务和表的介绍☆、Hive、ODS层、DWD层

    一.2.0版本对比 二.业务介绍 1.术语 SKU SPU UV: user views 用户浏览总量[浏览量] PV:page views 页面浏览总量 2.电商业务表结构 表名 同步方式 字段名 ...

  4. 10-排序6 Sort with Swap(0, i) (25point(s))

    10-排序6 Sort with Swap(0, i) (25point(s)) Given any permutation of the numbers {0, 1, 2,..., N−1}, it ...

  5. CTF隐写术总结

    CTF隐写术总结 1.查看图像属性及详细信息 或者查看图像的高度,利用winhex等工具改变图像宽度或高度,查看是否有隐藏信息. 2.利用winhex或nodepad++打开搜索ctf,flag,ke ...

  6. 接口Interface的作用不止是解耦

    简言: 好久没写博客了,今天手痒想写一写.废话少说,我们直入主题,相信大家对接口interface,这个单词一定不陌生.但是要说到它的作用,除了解耦之外,还有什么作用呢?可能大多数人都不是很清楚(大牛 ...

  7. 【机器学习】李宏毅——Flow-based Generative Models

    前文我介绍了部分关于生成学习的内容,可以参考我这篇博文点此 前面介绍的各个生成模型,都存在一定的问题: 对于PixelRNN这类模型来说,就是从左上角的像素开始一个个地进行生成,那么这个生成顺序是否合 ...

  8. JavaScript:对象:如何创建对象?

    JS是面向对象的语言,除开基础数据类型,其他所有的数据类型都是对象,包括函数. 如何去理解对象,什么是对象呢? 举个例子,比如我们将日常生活中见到的猫这种动物,抽象成一个类Cat,这里不去谈类是什么概 ...

  9. 【转载】EXCEL VBA UBound(arr,1),UBound(arr,2)解释

    Resize(UBound(arr, 1), UBound(arr, 2) 这句什么意思   resize()是一个扩展单元格地址区域的函数,有两个参数,第一个是行扩展数,第二个是列扩展数   UBo ...

  10. 重新捋一捋React源码之更新渲染流程

    前言 前些天在看Dan Abramov个人博客(推荐阅读,站在React开发者的角度去解读一些API的设计初衷和最佳实践)里的一篇文章,其重点部分的思想就是即使不使用Memo(),也可以通过组合的方式 ...