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

#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[]; int n,m,u;
int f[];
int ed[];
long long dis[];
vector<int> ans;
const long long inf = (long long)*; int main(){
    cin >>n >>m;
    for (int i=;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=;i<=n;i++) dis[i]=inf;
    //for (int i=1;i<=n;i++) cout<<dis[i]<<endl;
    dis[u]=;
    while (!q.empty()){
        int now = q.front();
        q.pop();
        for (int i=;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=;
    for (int i=;i<=n;i++)
        if (f[i]!=) cnt+=ed[f[i]],ans.push_back(f[i]);
    sort(ans.begin(),ans.end());
    cout << cnt<<endl;
    for(int i=;i<ans.size();i++){
        if (i>) cout<<" ";
        cout << ans[i];
    }
    return ;

}

最新文章

  1. Android SDK Manager 更新代理配置
  2. MySQL 函数积累
  3. ulipad 常用快捷键
  4. 静态数据认证(SDA)与动态数据认证(DDA)的区别
  5. Android控件之GridView
  6. 第十一章、认识与学习 BASH 数据流重导向
  7. GDI画验证码
  8. hdu120118岁生日
  9. 4x4矩阵键盘扫描
  10. android 获取本机号码需要root吗?
  11. 神州数码品众_Android面试
  12. nodejs后台集成富文本编辑器(ueditor)
  13. wps中如何插入参考文献
  14. [Swift]LeetCode547. 朋友圈 | Friend Circles
  15. xshell终端向远程服务器上传文件方法
  16. 小白眼中的AI之~Numpy基础
  17. Django学习手册 - 初识django
  18. Django 2.x 常用命令
  19. C#项目”XXXXX”针对的是”.NETFramework,Version=v4.7.1”但此计算机没有安装它
  20. JZ2440使用笔记之熟悉uboot和Linux的移植

热门文章

  1. android开发学习 ------- RecyclerView多类型实例
  2. JDK使用最多的模式之一--观察者模式
  3. 协程和I/O模型
  4. 8 Explicit Animations 指明的动画 笔记
  5. ubuntu下安装mongo扩展
  6. ubuntu 安装 pcap
  7. 回顾Spring MVC_01_概述_入门案例
  8. idea创建和部署tomcat项目
  9. VsCode使用之HTML 中 CSS Class 智能提示
  10. No-6.用户权限相关命令