题目:戳这里

题意:求出1到所有点的最短路径后,把边减到小于等于k条,问保留哪些边可以使仍存在的最短路径最多。

解题思路:这题就是考求最短路的原理。比如dijkstra,用优先队列优化后存在队列中的前k条边就是答案。因为可以优先队列维护最小值,因此放进队列中的边一定是最短的。借这道题又复习了下dijkstra。

附本人代码:

 1 #include <cstdio>
2 #include <cstring>
3 #include <queue>
4 #include <vector>
5 typedef long long ll;
6 const int Max = 3e5+10;
7 const ll inf = 1e18;
8 using namespace std;
9 struct edge{int to,id; ll cost;};
10 vector<edge>G[Max];
11 ll d[Max];
12 struct nod {
13 ll x;
14 int y, id;
15 nod() {}
16 nod(ll xx, int yy, int Id) {
17 x = xx,y = yy, id = Id;
18 }
19 bool friend operator < (nod a, nod b) {
20 return a.x > b.x;
21 }
22 };
23 int n,m, k;
24 int anslen = 0;
25 int ans[Max];
26 void dijkstra(){
27 priority_queue<nod >que;
28 d[0]=0;
29 que.push(nod(0,0,0));
30 while(!que.empty()){
31 nod p=que.top();que.pop();
32 int v=p.y;
33 if(d[v]<p.x) continue;
34 if(anslen == k) break;
35 if(p.id != 0)
36 ans[++anslen] = p.id;
37 for(int i=0;i<G[v].size();i++){
38 edge e=G[v][i];
39 if(d[e.to]>d[v]+e.cost){
40 d[e.to]=d[v]+e.cost;
41 que.push(nod(d[e.to],e.to,e.id));
42 }
43 }
44 }
45 }
46 int main(){
47
48 scanf("%d %d %d",&n,&m, &k);
49 fill(d,d +Max,inf);
50 int a,b;
51 ll c;
52 for(int i=0;i<m;i++){
53 scanf("%d %d %lld",&a,&b,&c);
54 a-=1;
55 b-=1;
56 edge e;
57 e.to=b;e.cost=c;
58 e.id = i+1;
59 G[a].push_back(e);
60 e.to=a;
61 G[b].push_back(e);
62 }
63 dijkstra();
64 printf("%d\n", anslen);
65 for(int i = 1; i <= anslen; ++i) {
66 printf("%d ", ans[i]);
67 }
68
69 return 0;
70 }

1076D Edge Deletion 【最短路】的更多相关文章

  1. Codeforces 1076D Edge Deletion(最短路树)

    题目链接:Edge Deletion 题意:给定一张n个顶点,m条边的带权无向图,已知从顶点1到各个顶点的最短路径为di,现要求保留最多k条边,使得从顶点1到各个顶点的最短距离为di的顶点最多.输出m ...

  2. Codeforces 1076D Edge Deletion 【最短路+贪心】

    <题目链接> 题目大意: n个点,m条边的无向图,现在需要删除一些边,使得剩下的边数不能超过K条.1点为起点,如果1到 i 点的最短距离与删除边之前的最短距离相同,则称 i 为 " ...

  3. 【CF1076D】Edge Deletion 最短路+贪心

    题目大意:给定 N 个点 M 条边的无向简单联通图,留下最多 K 条边,求剩下的点里面从 1 号顶点到其余各点最短路大小等于原先最短路大小的点最多怎么构造. 题解:我们可以在第一次跑 dij 时直接采 ...

  4. Edge Deletion CodeForces - 1076D(水最短路)

    题意: 设从1到每个点的最短距离为d,求删除几条边后仍然使1到每个点的距离为d,使得剩下的边最多为k 解析: 先求来一遍spfa,然后bfs遍历每条路,如果d[v] == d[u] + Node[i] ...

  5. Educational Codeforces Round 54 (Rated for Div. 2) D:Edge Deletion

    题目链接:http://codeforces.com/contest/1076/problem/D 题意:给一个n个点,m条边的无向图.要求保留最多k条边,使得其他点到1点的最短路剩余最多. 思路:当 ...

  6. Codeforces1076D. Edge Deletion(最短路树+bfs)

    题目链接:http://codeforces.com/contest/1076/problem/D 题目大意: 一个图N个点M条双向边.设各点到点1的距离为di,保证满足条件删除M-K条边之后使得到点 ...

  7. CF1076D Edge Deletion 最短路径树+bfs

    题目描述 You are given an undirected connected weighted graph consisting of n n n vertices and m m m edg ...

  8. CF1076D Edge Deletion

    洛谷传送门 cf传送门 这道题作为div.2的D题,被我一眼秒了我觉得十分荣幸,然后就开始写,然后就写了好久. AC之后看网上的题解,发现好多最短路树的,猛然发现我写的好复杂啊,结果还看到了直接一遍d ...

  9. CF1076D Edge Deletion 最短路树

    问题描述 Codeforces 洛谷(有翻译) 题解 最短路树,是一棵在最短路过程中构建的树. 在\(\mathrm{Dijkstra}\)过程中,如果最终点\(y\)是由点\(x\)转移得到的,则在 ...

随机推荐

  1. 查看pod日志无法查看的解决方式

    查看pod日志 [root@k8s-master1 ~]# kubectl logs nginx-7cdbd8cdc9-2qrcw Error from server (Forbidden): For ...

  2. ts类与修饰符

    最近在用egret做游戏,就接触到了ts,刚开始的时候觉得类挺难的,毕竟大多数的JavaScript工程师工作中不怎么需要用到这个,但是学起来就不愿意撒手了,真香! typescript其实是es6的 ...

  3. 本地jar添加到本地仓库 本地jar依赖无效问题

    最近工作发生了一个很奇怪的事情,我在本地写了一个项目,打包成jar,然后敲命令mvn install:install-file -DgroupId=com.yzwine -DartifactId=yz ...

  4. 图解 ECDHE 密钥交换算法

    HTTPS 常用的密钥交换算法有两种,分别是 RSA 和 ECDHE 算法. 其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的.而 ECDHE 算法具有前向安全 ...

  5. 图像分类学习:X光胸片诊断识别----迁移学习

    引言   刚进入人工智能实验室,不知道是在学习机器学习还是深度学习,想来他俩可能是一个东西,查阅之后才知道这是两个领域,或许也有些交叉,毕竟我也刚接触,不甚了解.   在我还是个纯度小白之时,写下这篇 ...

  6. python系统监控及邮件发送

    python系统监控及邮件发送   #psutil模块是一个跨平台库,能轻松实现获取系统运行的进程和系统利用率   import psutil                              ...

  7. jQuery 文本段落展开和折叠效果

    jQuery 文本段落展开和折叠效果 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" c ...

  8. 一文打尽 Linux/Windows端口复用实战

    出品|MS08067实验室(www.ms08067.com) 本文作者:Spark(Ms08067内网安全小组成员) 定义:端口复用是指不同的应用程序使用相同端口进行通讯. 场景:内网渗透中,搭建隧道 ...

  9. SpringCloud配置刷新机制的简单分析[nacos为例子]

    SpringCloud Nacos 本文主要分为SpringCloud Nacos的设计思路 简单分析一下触发刷新事件后发生的过程以及一些踩坑经验 org.springframework.cloud. ...

  10. synchronized的底层探索

    其实没看懂,但是提供了不同的思路,先记下 https://www.cnblogs.com/yuhangwang/p/11256476.html https://www.cnblogs.com/yuha ...