首页 > 其他分享 >【模板】链式前向星

【模板】链式前向星

时间:2023-11-21 22:57:58浏览次数:34  
标签:head int 2522% E5% add edge 前向星 链式 模板

/*
https://blog.csdn.net/sugarbliss/article/details/86495945?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169977002316800215045285%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169977002316800215045285&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-86495945-null-null.142^v96^pc_search_result_base2&utm_term=%E9%93%BE%E5%BC%8F%E5%89%8D%E5%90%91%E6%98%9F&spm=1018.2226.3001.4187
*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005; // 点数最大值
int n, m, cnt;         // n个点,m条边
struct Edge
{
    int to, w, next; // 终点,边权,同起点的上一条边的编号
} edge[maxn];        // 边集
int head[maxn];      // head[i],表示以i为起点的第一条边在边集数组的位置(编号)
void init()          // 初始化
{
    for (int i = 0; i <= n; i++)
        head[i] = -1;
    cnt = 0;
}

// 编号从0开始
void add_edge(int u, int v, int w) // 加边,u起点,v终点,w边权
{
    edge[cnt].to = v;         // 终点
    edge[cnt].w = w;          // 权值
    edge[cnt].next = head[u]; // 以u为起点上一条边的编号,也就是与这个边起点相同的上一条边的编号
    head[u] = cnt++;          // 更新以u为起点上一条边的编号
}
int main()
{
    cin >> n >> m;
    int u, v, w;
    init();                      // 初始化
    for (int i = 1; i <= m; i++) // 输入m条边
    {
        cin >> u >> v >> w;
        add_edge(u, v, w); // 加边
        /*
        加双向边
        add_edge(u, v, w);
        add_edge(v, u, w);
        */
    }
    /*
    我们初始化head为-1,所以找到你最后一个边(也就是以 i 为起点的第一条边)时,你的edge[j].next为 -1做为终止条件
    */
    for (int i = 1; i <= n; i++) // n个起点
    {
        cout << i << endl;
        for (int j = head[i]; j != -1; j = edge[j].next) // 遍历以i为起点的边
        {
            cout << i << " " << edge[j].to << " " << edge[j].w << endl;
        }
        cout << endl;
    }
    return 0;
}
/*
5 7
1 2 1
2 3 2
3 4 3
1 3 4
4 1 5
1 5 6
4 5 7
*/

 

标签:head,int,2522%,E5%,add,edge,前向星,链式,模板
From: https://www.cnblogs.com/nijigasaki14/p/17847820.html

相关文章

  • 【模板】并查集 (洛谷P3367)
    1#include<bits/stdc++.h>2usingnamespacestd;3template<classT>4inlinevoidread(T&s)5{6s=0;7intw=1;8charch=getchar();9while(ch<'0'||ch>'9')10{11......
  • 【模板】线段树1(洛谷P3372)
    1#include<iostream>2#include<cstdio>34usingnamespacestd;56template<classT>7inlinevoidread(T&s)8{9s=0;10intw=1;11charch=getchar();12while(ch<'0�......
  • 组合数模板(省赛)
    组合数+快速幂#include<bits/stdc++.h>//#pragmaGCCoptimize("Ofast")#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<cmath>//#definedoublelongdou......
  • KMP模板
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e3+10,inf=0x3f3f3f3f;intnex[N];//nex[j]的意思是当子串的第j个字符和主串的第i个字符不匹配时,我们应该从子串的nex[j]字符开始重新匹配stringa,b;/*kmp指针回退j=nex[j-1]......
  • 行为型模式-模板方法模式
    1什么是模板方法模式模板方法模式是一种行为设计模式,它定义了一个算法的骨架,将一些步骤的具体实现延迟到子类中。这样可以在不改变算法结构的情况下,允许子类根据自身的需求来实现特定的步骤。模板方法模式通常由一个抽象基类提供一个模板方法,该方法定义了算法的骨架,并调用一系......
  • 【AD域控】组策略模板的导入与使用
    接到了leader的需求,希望能够设置浏览器的主页,由于我们是运维岗,负责AD域控,脑海中第一时间就跳出了舍近求远的域控设置。当然最后也是没有成功,但总结出了在Windows设备上配置MicrosoftEdge策略设置,血泪总结!【AD域控】组策略模板的导入与使用 1.下载MicrosoftEdgeforBusiness......
  • pp_orange的多项式模板
    /*Codebypp_orange*/#include<bits/stdc++.h>#definem_p(a,b)make_pair(a,b)#definepbpush_back#definelllonglong#defineullunsignedlonglong#definelldlongdouble#defineinf0x7FFFFFFF#defineinff9223372036854775807#definerep(i,l,......
  • wpf 自定义按钮模板
    <ButtonWidth="300"Height="100"Content="自定义按钮"Background="Bisque"FontSize="23"Foreground="Orchid"><Button.Template><ControlTemplateTargetType=&qu......
  • GUI-Guider 生成打印机模板并在 ESP32-S3 上面运行
    原文:https://www.jianshu.com/p/51fc4c1d1e66目录目录ESP32-S3移植GUI-Guider的打印机例程前提准备1.GUIGuider生成工程根据屏幕参数新建工程2.移植代码到lvgl例程里将生成的代码作为组件使用与参考链接中的不同调用生成的代码ESP32-S3移植GUI-Guid......
  • 前端学习笔记202310学习笔记第一百零玖天-vue3-链式调用&对象属性与遍历&this指向&cal
     ......