从0开始 图论学习 邻接表 STL vector

摘要:
邻接列表表示由向量编写器实现:pprp代码如下:#include 使用namespacestd;组分最大值=1000;结构节点{intto;intw;节点:to,w{}};boolcmp{ifreturn1.w<n2.w;return1.to<n2.to;}intmain(){vectorvt[maxn];intvv,ee;intff,tt,ww;cin˃˃vv˃˃ee;用于{cin˃˃ff˃˃tt˃˃ww;nodenn;vt[ff].push_back;}对于{sort;}对于{if{for{cout˂˂“op:”˂˂i˂˂“ed:”˂˂vt[i][j]。to˂˂“w:”˂˂vt[i][j]。w˂˂endl;}}}return0;}

邻接表表示

用vector实现

writer:pprp

代码如下:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000;
struct node
{
    int to;
    int w;
    node(int tt, int ww):to(tt),w(ww){}
};
bool cmp(node n1, node n2)
{
    if(n1.to == n2.to)
        return n1.w < n2.w;
    return n1.to < n2.to;
}
int main()
{
    vector<node> vt[maxn];
    int vv, ee;
    int ff, tt, ww;
    cin >> vv >> ee;
    for(int i = 0 ; i < ee ; i++)
    {
        cin >> ff >> tt >> ww;
        node nn(tt,ww);
        vt[ff].push_back(nn);
    }
    for(int i = 0 ; i < vv; i++)
    {
        sort(vt[i].begin(),vt[i].end(),cmp);
    }
    for(int i = 0 ; i < vv; i++)
    {
        if(vt[i].size() > 0)
        {
            for(size_t j = 0 ; j < vt[i].size(); j++)
            {
                cout << "op:" << i << " ed:" << vt[i][j].to << " w:" << vt[i][j].w << endl;
            }

        }
    }
    return 0;
}

免责声明:文章转载自《从0开始 图论学习 邻接表 STL vector》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《QT Creator快速入门》第十二章:3D绘图C++之EOF()下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++ Primer学习笔记

目录 12.1 动态内存与智能指针 12.1.1 shared_ptr类 12.1.2 直接管理内存 12.1.3 shared_ptr和new结合使用 12.1.4 智能指针和异常 12.1.5 unique_ptr 12.1.6 weak_ptr 12.2 动态数组 12.2.1 new和数组 12.2.2 alllocator类...

C++ STL map使用

Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数;map<string , int >mapstring; map<int ,string >mapint;map<sring, char>mapstring;...

C++学习笔记九顺序容器(二) ForFreeDom 博客园

C++学习笔记九-顺序容器(二) - ForFreeDom - 博客园 一、插入操作如何影响容器的选择: 1.list 容器表示不连续的内存区域,允许向前和向后逐个遍历元素。在任何位置都可高效地 insert 或 erase 一个元素。插入或删除 list 容器中的一个元素不需要移动任何其他元素。另一方面,list 容器不支持随机访问,访问某个元素要求...

计算几何 + 欧拉定理 (一笔画)

题目大意:依次给定多个点(要求第一个点和最后一个点重叠),把前后两个点相连求最后得到的图形的面的个数 思路分析 : 借助欧拉定理,V+F-E = 2,只要求出点的数量和边的数量就可以计算出面的数量,点的数量只要枚举直线就可以,但是有可能有重复的点,之最去重一下就可以,然后在枚举剩下的点出现在几条直线中。 代码示例:(未测试) #define ll long...

C++Vector使用方法

C++内置的数组支持容器的机制,可是它不支持容器抽象的语义。要解决此问题我们自己实现这种类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。 标准库vector类型使用须要的头文件:#include <vector>。vector 是一个类模板。不是一种数据类型,vector<int>是一种数据类型。Vec...

C++顺序容器知识总结

容器是一种容纳特定类型对象的集合。C++的容器可以分为两类:顺序容器和关联容器。顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的。标准库定义了三种顺序容器的类型:vector、list和deque(双端队列)。此外,标准库还提供了三种容器适配器:stack、queue和prioroty_queue类型。适配器是根据原始的容器类型所提供...