码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • U81206:链式前向星模板题


    【题目来源】
    https://www.luogu.com.cn/problem/U81206

    【题目描述】
    链式前向星模板题。
    读入n个点,m条边,以及flag。若flag==1,则图有向,否则无向。
    对每个点输出它的每一条边。

    【输入格式】
    第一行三个数:n,m,flag,题意如上所示。
    第2~1+m行,每行三个数x,y,z。代表从x到y有一条长为z的边。

    【输出格式】
    若flag=1,则m行。若flag=0,则m*2行。
    每行三个数,即该点的编号、所指向点的编号,边的长度。
    先按第一个数升序排列,再以链式前向星中的顺序输出即可。 (其实就是i从1到n,再按顺序查找边输出即可)
    特殊的,若该点无出边,单独一个空行。

    【算法分析】
    本题所需链式前向星核心知识点,详见:https://blog.csdn.net/hnjzsyjyj/article/details/126474608


    【算法代码】

    1. /* 链式前向星存图
    2. val[idx] 表示第 idx 条边的权值。
    3. e[idx] 表示第 idx 条边的终点。
    4. ne[idx] 表示与第 idx 条边同起点的最近一次被添加的边的编号。
    5. h[a] 表示以结点 a 为起点的最近一次被添加的边的编号。这个表述是在使用 ne[idx]=h[a] 时,也即使用 h[a]=idx++ 更新 h[a] 之前而言的。要特别注意这个语境。
    6. */
    7. #include
    8. using namespace std;
    9. const int maxn=2000005;
    10. const int maxm=4000005;
    11. int e[maxm<<1],ne[maxm<<1],h[maxn],val[maxm<<1],idx;
    12. // Undirected edges are special directed edges, open double
    13. // int e[maxm<<1],ne[maxm<<1],h[maxn],val[maxm<<1],idx;
    14. void add(int a,int b,int w) {
    15. val[idx]=w,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
    16. }
    17. int main() {
    18. int n,m,f;
    19. cin>>n>>m>>f;
    20. memset(h,-1,sizeof(h));
    21. while(m--) {
    22. int a,b,c;
    23. scanf("%d%d%d",&a,&b,&c);
    24. add(a,b,c);
    25. if(f==0) add(b,a,c);
    26. }
    27. for(int i=1; i<=n; i++) {
    28. for(int j=h[i]; j!=-1; j=ne[j]) {
    29. printf("%d %d %d\n",i,e[j],val[j]);
    30. }
    31. }
    32. return 0;
    33. }
    34. /*
    35. in1:
    36. 5 5 0
    37. 1 2 5
    38. 1 4 6
    39. 2 3 7
    40. 3 5 3
    41. 3 4 1
    42. out1:
    43. 1 4 6
    44. 1 2 5
    45. 2 3 7
    46. 2 1 5
    47. 3 4 1
    48. 3 5 3
    49. 3 2 7
    50. 4 3 1
    51. 4 1 6
    52. 5 3 3
    53. --------
    54. in2:
    55. 4 3 1
    56. 1 3 6
    57. 3 4 1
    58. 2 1 3
    59. out2:
    60. 1 3 6
    61. 2 1 3
    62. 3 4 1
    63. */



    【参考文献】
    https://blog.csdn.net/hnjzsyjyj/article/details/126475298
    https://blog.csdn.net/hnjzsyjyj/article/details/126474608
    https://www.luogu.com.cn/blog/szbszb/u81206-ti-xie


     

  • 相关阅读:
    ADB移动端入门
    JavaScript: Data Structures
    让批处理的工作目录指向当前目录
    Qt开发 入门
    Vue组件化编码流程,组件自定义事件,全局事件总线,消息订阅与发布
    过滤器和监听器
    win10/Windows 10 纯净精简版美化
    美国将采取新政策降低对中国大陆的依赖 | 百能云芯
    OpenMLDB 开源一周年,感恩遇见
    vue.config.js忽略对eslint检查
  • 原文地址:https://blog.csdn.net/hnjzsyjyj/article/details/126476384
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号