cf1076d 贪心最短路
#include<bits/stdc++.h>
#include<queue>
using namespace std;
#define maxn 300005
#define ll long long
struct qnode{
ll v,c,id;
qnode(){}
qnode(ll v,ll c,ll id):v(v),c(c),id(id){}
bool operator<(const qnode&r)const{
return c>r.c;
}
};
struct Edge{ll to,nxt,w,id;}edge[maxn<<];
ll n,m,k,head[maxn],tot,vis[maxn],dist[maxn];
void init(){
tot=;
memset(head,-,sizeof head);
}
void addedge(ll u,ll v,ll w,ll id){
edge[tot].to=v;edge[tot].nxt=head[u];edge[tot].id=id;edge[tot].w=w;head[u]=tot++;
} priority_queue<qnode>pq;
vector<ll>vec;
void dijkstra(ll s){
memset(vis,,sizeof vis);
memset(dist,0x3f,sizeof dist);
dist[s]=;
pq.push(qnode(s,,));
while(!pq.empty()){
qnode tmp=pq.top();
pq.pop();
ll u=tmp.v;
if(vis[u])continue;
vis[u]=;
vec.push_back(tmp.id);
if(vec.size()==k+)return;
for(int i=head[u];i!=-;i=edge[i].nxt){
ll v=edge[i].to,cost=edge[i].w;
if(vis[v])continue;
if(dist[v]>dist[u]+cost){
dist[v]=dist[u]+cost;
pq.push(qnode(v,dist[v],edge[i].id));
}
}
}
} int main(){
init();
int u,v,w;
cin>>n>>m>>k;
for(int i=;i<=m;i++){
cin>>u>>v>>w;
addedge(u,v,w,i);
addedge(v,u,w,i);
}
dijkstra(); k=min(k,n-);
cout<<k<<endl;
for(int i=;i<=k;i++)
cout<<vec[i]<<" ";
return ;
}
cf1076d 贪心最短路的更多相关文章
- [CSP-S模拟测试]:午餐(贪心+最短路)
题目传送门(内部题115) 输入格式 第一行两个正整数$n,m$. 接下来$m$行,每行$4$个正整数$u_j,v_j,L_j,R_j$. 接下来一行$n$个数,若第$i$个数为$1$,则$i$号同学 ...
- ZOJ 3946 Highway Project 贪心+最短路
题目链接: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3946 题解: 用dijkstra跑单元最短路径,如果对于顶点v,存 ...
- CF 360 E Levko and Game —— 贪心+最短路
题目:http://codeforces.com/contest/360/problem/E 首先,每条边不是选 \( l[i] \) 就是选 \( r[i] \): 做法就是先把边权都设成 \( r ...
- Codeforces 360E 贪心 最短路
题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927 在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩 ...
- WC2019游记 && 课件
WC2019 游记 课件 wc2019.zip_免费高速下载|百度网盘-分享无限制 提取码: un6z day 0 打飞机去广州... 在飞机上刷了爱乐(le)之城, 相当好看... 广二好大! 哈三 ...
- BZOJ刷题指南(转)
基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...
- 【CF1076D】Edge Deletion 最短路+贪心
题目大意:给定 N 个点 M 条边的无向简单联通图,留下最多 K 条边,求剩下的点里面从 1 号顶点到其余各点最短路大小等于原先最短路大小的点最多怎么构造. 题解:我们可以在第一次跑 dij 时直接采 ...
- Codeforces Round #303 (Div. 2) E. Paths and Trees 最短路+贪心
题目链接: 题目 E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes inputs ...
- Codeforces 1076D Edge Deletion 【最短路+贪心】
<题目链接> 题目大意: n个点,m条边的无向图,现在需要删除一些边,使得剩下的边数不能超过K条.1点为起点,如果1到 i 点的最短距离与删除边之前的最短距离相同,则称 i 为 " ...
随机推荐
- delegate事件委托
下面举个例子 我们希望通过点击使得点击的li标签变红 <body style="height:2000px;"> <ul> <li>1111&l ...
- linux学习记录.6.vscode调试c makefile
参考 https://www.cnblogs.com/lidabo/p/5888997.html task有更新,不能使用文章的代码. 多文件 终端 touch main.c hw.c hw.h vs ...
- npm 常用命令详解(转载)
学习gulp的使用时,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块的朋友不可错过这 ...
- Git——如何将本地项目提交至远程仓库
参考文章:http://blog.csdn.net/dadaxiongdebaobao/article/details/52081826 git 将一个本地文件目录提交到远程仓库的步骤 参考文章: ...
- Spring的aop操作
1 在spring里面进行aop操作,使用aspectj实现(1)aspectj不是spring一部分,和spring一起使用进行aop操作(2)Spring2.0以后新增了对AspectJ支持2 使 ...
- 配置中文分词器 IK-Analyzer-Solr7
先下载solr7版本的ik分词器,下载地址:http://search.maven.org/#search%7Cga%7C1%7Ccom.github.magese分词器GitHub源码地址:http ...
- 2017-2018-2 20165237 实验二《Java面向对象程序设计》实验报告
##2017-2018-2 20165237 实验二<Java面向对象程序设计>实验报告 No.1 实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/r ...
- tomat startup.bat 日志乱码问题解决
1.修改conf 下的logging.properties java.util.logging.ConsoleHandle.encoding=GBK C:\Users\Administrator> ...
- linux 终端命令行的快捷键列表
终端有很多快捷键,不太好记,常用的在这里 Ctrl+r 实现快速检索使用过的历史命令.Ctrl+r中r是retrieve中r.Ctrl+a:光标回到命令行首. (a:ahead)Ctrl+e:光标回到 ...
- [转] 使用gc && objgraph 优化python内存
转自https://www.cnblogs.com/xybaby/p/7491656.html 使用gc.objgraph干掉python内存泄露与循环引用! 目录 一分钟版本 python内存管 ...