1076D Edge Deletion 【最短路】
题目:戳这里
题意:求出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 【最短路】的更多相关文章
- Codeforces 1076D Edge Deletion(最短路树)
题目链接:Edge Deletion 题意:给定一张n个顶点,m条边的带权无向图,已知从顶点1到各个顶点的最短路径为di,现要求保留最多k条边,使得从顶点1到各个顶点的最短距离为di的顶点最多.输出m ...
- Codeforces 1076D Edge Deletion 【最短路+贪心】
<题目链接> 题目大意: n个点,m条边的无向图,现在需要删除一些边,使得剩下的边数不能超过K条.1点为起点,如果1到 i 点的最短距离与删除边之前的最短距离相同,则称 i 为 " ...
- 【CF1076D】Edge Deletion 最短路+贪心
题目大意:给定 N 个点 M 条边的无向简单联通图,留下最多 K 条边,求剩下的点里面从 1 号顶点到其余各点最短路大小等于原先最短路大小的点最多怎么构造. 题解:我们可以在第一次跑 dij 时直接采 ...
- Edge Deletion CodeForces - 1076D(水最短路)
题意: 设从1到每个点的最短距离为d,求删除几条边后仍然使1到每个点的距离为d,使得剩下的边最多为k 解析: 先求来一遍spfa,然后bfs遍历每条路,如果d[v] == d[u] + Node[i] ...
- Educational Codeforces Round 54 (Rated for Div. 2) D:Edge Deletion
题目链接:http://codeforces.com/contest/1076/problem/D 题意:给一个n个点,m条边的无向图.要求保留最多k条边,使得其他点到1点的最短路剩余最多. 思路:当 ...
- Codeforces1076D. Edge Deletion(最短路树+bfs)
题目链接:http://codeforces.com/contest/1076/problem/D 题目大意: 一个图N个点M条双向边.设各点到点1的距离为di,保证满足条件删除M-K条边之后使得到点 ...
- CF1076D Edge Deletion 最短路径树+bfs
题目描述 You are given an undirected connected weighted graph consisting of n n n vertices and m m m edg ...
- CF1076D Edge Deletion
洛谷传送门 cf传送门 这道题作为div.2的D题,被我一眼秒了我觉得十分荣幸,然后就开始写,然后就写了好久. AC之后看网上的题解,发现好多最短路树的,猛然发现我写的好复杂啊,结果还看到了直接一遍d ...
- CF1076D Edge Deletion 最短路树
问题描述 Codeforces 洛谷(有翻译) 题解 最短路树,是一棵在最短路过程中构建的树. 在\(\mathrm{Dijkstra}\)过程中,如果最终点\(y\)是由点\(x\)转移得到的,则在 ...
随机推荐
- 特斯拉Toolbox诊断检测仪工具Tesla诊断电脑 Tesla Toolbox
Tesla特斯拉Toolbox诊断工具Tesla诊断电脑检测仪 Tesla Toolbox, Tesla Toolbox Diagnostic Tester.Language: English,Deu ...
- CMOS 摄像头的Skipping 和 Binning 模式
在通常的摄像头中,不同的resolution对应不同的帧率.想要提高帧率就要考虑是否需要缩小视野(FOV).若不希望视野缩小,就需要减少resolution. 常用的减少resolution的两种方式 ...
- windows上传ipa到苹果开发者中(app store)的方法
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开发者中心才能在构建版本里选择构建版本上架 ...
- mybatis源码解析之架构理解
mybatis是一个非常优秀的开源orm框架,在大型的互联网公司,基本上都会用到,而像程序员的圣地-阿里虽然用的是自己开发的一套框架,但其核心思想也无外乎这些,因此,去一些大型互联网公司面试的时候,总 ...
- 前端面试之HTML5的新变化
前端面试之HTML5的新变化 H5新增语义化标签 头部标签 <header> :头部标签 <nav> :导航标签 <article> :内容标签 <secti ...
- 使用Python对MySQL数据库插入二十万条数据
1.当我们测试的时候需要大量的数据的时候,往往需要我们自己造数据,一条一条的加是不现实的,这时候就需要使用脚本来批量生成数据了. import pymysql import random import ...
- jmeter报Address already in use: connect
jmeter报Address already in use: connect 用windows进行jmeter压测出现java.net.BindException: Address already ...
- RestTemplate post请求
以前一开始用原生的http请求,那叫一个累,后来找到一个第三方的工具包,用起来是真的舒服,不过有一说一,第三方工具包依赖性真的强,除非和组长商量过,不然能少用,还是少用点.话说搞微服务的肯定少不了和H ...
- 文件系统层次结构标准 Linux 系统目录结构
https://zh.wikipedia.org/wiki/文件系统层次结构标准 多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求. [3] [4] [5] [6] 但截至200 ...
- Elasticsearch从0到千万级数据查询实践(非转载)
1.es简介 1.1 起源 https://www.elastic.co/cn/what-is/elasticsearch,es的起源,是因为程序员Shay Banon在使用Apache Lucene ...