codeforces 303 div2 E

赤裸裸的最短路,需要注意下枚举过程就好了。直接贴上别人的代码,发现他的代码挺符合我的风格,以后就这样写了。

 

#include <bits/stdc++.h>

using namespace std;

struct node{
    int y,z,id;
    node(){}
    node(int y,int z,int id):y(y),z(z),id(id){}
};
vector<node> e[300100];

int n,m,u;
int f[300100];
int ed[300100];
long long dis[300100];
vector<int> ans;
const long long inf = (long long)300100*1000000000;

int main(){
    cin >>n >>m;
    for (int i=1;i<=m;i++){
        int x,y,z;
        cin >> x>>y>>z;
        ed[i]=z;
        e[x].push_back(node(y,z,i));
        e[y].push_back(node(x,z,i));
    }
    cin >> u;
    queue<int> q;
    q.push(u);
    for (int i=1;i<=n;i++) dis[i]=inf;
    //for (int i=1;i<=n;i++) cout<<dis[i]<<endl;
    dis[u]=0;
    while (!q.empty()){
        int now = q.front();
        q.pop();
        for (int i=0;i<e[now].size();i++){
            int v = e[now][i].y;
            if (dis[now]+e[now][i].z<dis[v] || dis[now]+e[now][i].z==dis[v] && e[now][i].z<ed[f[v]]){
                f[v]=e[now][i].id;
                dis[v]=dis[now]+e[now][i].z;
                q.push(v);
            }
        }
    }
    long long cnt=0;
    for (int i=1;i<=n;i++)
        if (f[i]!=0) cnt+=ed[f[i]],ans.push_back(f[i]);
    sort(ans.begin(),ans.end());
    cout << cnt<<endl;
    for(int i=0;i<ans.size();i++){
        if (i>0) cout<<" ";
        cout << ans[i];
    }
    return 0;

} 

转载于:https://www.cnblogs.com/acvc/p/4517508.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1955. 统计特殊子序列的数目

文章目录1. 题目2. 解题1. 题目 特殊序列 是由 正整数 个 0 &#xff0c;紧接着 正整数 个 1 &#xff0c;最后 正整数 个 2 组成的序列。 比方说&#xff0c;[0,1,2] 和 [0,0,1,1,1,2] 是特殊序列。 相反&#xff0c;[2,1,0] &#xff0c;[1] 和 [0,1,2,0] 就不是特殊序列。…

java 中batch_java相关:Mybatis中使用updateBatch进行批量更新

java相关&#xff1a;Mybatis中使用updateBatch进行批量更新发布于 2020-7-13|复制链接摘记: 背景描述&#xff1a;通常如果需要一次更新多条数据有两个方式&#xff0c;(1)在业务代码中循环遍历逐条更新。(2)一次性更新所有数据(更准确的说是一条sql语句来更新所有数据&#x…

win7家庭版远程桌面补丁_无需惊慌!微软漏洞数月后再被“预警”打补丁即可防御...

9月7日&#xff0c;火绒接到用户反馈&#xff0c;咨询多家安全友商相继发布的漏洞预警一事。经火绒工程师确认&#xff0c;该漏洞(CVE-2019-0708)早在5月14日就已经被微软披露过&#xff0c;火绒也在第一时间发布了相关漏洞预警&#xff0c;并向火绒用户推送该漏洞补丁。此次多…

LeetCode 1954. 收集足够苹果的最小花园周长(数学)

文章目录1. 题目2. 解题1. 题目 给你一个用无限二维网格表示的花园&#xff0c;每一个 整数坐标处都有一棵苹果树。 整数坐标 (i, j) 处的苹果树有 ∣i∣∣j∣|i| |j|∣i∣∣j∣个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 &#xff0c;且每条边都与两条坐标…

python api数据接口_python写数据api接口

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

java星座测试需求分析_java十二星座 (快来测试你是什么星座吧)

无聊写个十二星座。。我发现我好像都是无聊的时候学习的。。。package 十二星座;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class 十二星座 {public static void main(String args[]){new Fram();}}class Fram extends JFrame implements Action…

【转载】Ubuntu终端常用的快捷键

Ubuntu中的许多操作在终端&#xff08;Terminal&#xff09;中十分的快捷&#xff0c;记住一些快捷键的操作更得心应手。在Ubuntu中打开终端的快捷键是CtrlAltT。其他的一些常用的快捷键如下&#xff1a; 快捷键功能Tab自动补全Ctrla光标移动到开始位置Ctrle光标移动到最末尾Ct…

LeetCode 1953. 你可以工作的最大周数

文章目录1. 题目2. 解题1. 题目 给你 n 个项目&#xff0c;编号从 0 到 n - 1 。 同时给你一个整数数组 milestones &#xff0c;其中每个 milestones[i] 表示第 i 个项目中的阶段任务数量。 你可以按下面两个规则参与项目中的工作&#xff1a; 每周&#xff0c;你将会完成 …

vim查找关键字_VIM学习笔记 对话框(Dialog)

查找对话框使用以下命令&#xff0c;将会打开一个查找对话框&#xff1a;:promptfind [string]如果在命令中指定了[string]值&#xff0c;那么就会查找该字符串&#xff1b;如果没有指定[string]值&#xff0c;那么将会查找上次搜索的字符串。替换对话框使用以下命令&#xff0…

oldboy_09_03day

1、split 分割 2、内置函数 __name__ ------- 主动执行还是被其他程序调用&#xff1b; 本程序内 __name__ 值为 __main__ ;其他程序调用时&#xff0c;__文件名__ __file__ 当前文件路径、是文件的相对路径 __doc__ 当前程序说明文档 3、函数 def、形式参数 def test( a,*b)…

LeetCode 1952. 三除数

文章目录1. 题目2. 解题1. 题目 给你一个整数 n 。如果 n 恰好有三个正除数 &#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在整数 k &#xff0c;满足 n k * m &#xff0c;那么整数 m 就是 n 的一个 除数 。 示例 1&#xff1a; 输入&#xff…

Java充电宝模型设计_继续探讨点赞功能模块设计

继续探讨点赞功能模块设计前几天我们设计了点赞模块的模块&#xff0c;大致思路就是&#xff1a;用户点赞&#xff0c;首先缓存到redis中进行保存&#xff0c;redis中既要保存点赞总数&#xff0c;还要保存点赞记录。然后定时执行redis数据到数据库中。但是&#xff0c;今天在资…

python可变参数函数二阶导数公式_python中函数的可变参数

简介 INTRODUCTION一、【其实已经用过】可变参数 二、可变参数普通参数 结合用法1 三、知识要点总结强调知识回顾&#xff1a;1.函数关键字参数2.函数的参数的默认值。必须从右边写到左边。一、【其实已经用过】可变参数回顾系统自带的可变参数函数print#系统自带的可变参数函数…

mysql root用户密码个性

对名为“mysql”数据库下的表“user”进行操作如下语句&#xff1a;update user set passwordPASSWORD("your_password") where user"root"转载于:https://www.cnblogs.com/netcorner/p/4529613.html

LeetCode 1957. 删除字符使字符串变好

文章目录1. 题目2. 解题1. 题目 一个字符串如果没有 三个连续 相同字符&#xff0c;那么它就是一个 好字符串 。 给你一个字符串 s &#xff0c;请你从 s 删除 最少 的字符&#xff0c;使它变成一个 好字符串 。 请你返回删除后的字符串。题目数据保证答案总是 唯一的 。 示…

广度优先遍历_LeetCode | 广度优先遍历

阅读本文大约需要 4 分钟概述前言429 N 叉树的层次遍历 90.36%102 二叉树的层次遍历 99.76%后记前言不管经济多不好&#xff0c;提高自身硬实力才是关键。本文由一个骚包程序猿zone7撰写&#xff0c;欢迎关注。429 N 叉树的层次遍历 90.36%给定一个 N 叉树&#xff0c;返回其节…

c写成php的扩展_用C语言编写PHP扩展

1&#xff1a;预定义vi myfunctions.defstring self_concat(string str, int n)2&#xff1a;到PHP源码目录的ext目录#cd /usr/local/php-5.4.0/ext/执行命令&#xff0c;生成对应扩展目录#./ext_skel --extnamecaleng_module --proto/home/hm/caleng_module.def./ext_skel --e…

LeetCode 1958. 检查操作是否合法(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的 8 x 8 网格 board &#xff0c;其中 board[r][c] 表示游戏棋盘上的格子 (r, c) 。 棋盘上空格用 . 表示&#xff0c;白色格子用 W 表示&#xff0c;黑色格子用 B 表示。 游戏中每次操作步骤为&#xff1a;选择一个空格…

php获取周几,php怎么获得星期几

php怎么获得星期几2021-03-07 15:06:02php获得星期几的方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后定义一个数组&#xff1b;最后通过“echo "星期".$weekarray[date("w")];”方式获得星期几即可。本文操作环境&#xff1a;Windows7系统、PH…

电脑假死卡的动不了_最近遇到奇怪电脑问题(实战篇)

点击蓝字关注我们话不多扯&#xff0c;说事最近遇到奇怪电脑问题装的是7系统32位开机可以进入系统插着网线开机&#xff0c;就假死拔掉网线开机&#xff0c;正常&#xff0c;然后插上网线依旧正常再带着网线关机&#xff0c;开机后又成假死假死后拔下网线依旧恢复不了必须是不插…