欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vector

程序员文章站 2022-03-23 13:32:17
...

说实话,我也没有搞的太清楚它是干什么的。不过做题的时候,似乎只要知道可以写邻接矩阵,挺好用的。

之前邻接矩阵需要这么写:

int a[1005][1005];

然后遍历的时候这样:

for (int i=0;i<n;i++)

    for (int j=0;j<m;j++)

    a[i][j]=...

这样的坏处是最多存10000的宽度,到100000数据肯定不行

 

因此有了这个玩意来救我们。本质上是一个稀疏矩阵,把东西压缩一下就能用了

struct P

{int to;int cost}

vector <P>e[100005];

然后输入是这样

//假设输入是起点,终点,权值

for (int i=0;i<m;i++)
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c)
    P temp;
    temp.to=b;temp.cost=c;
    e[a].push_back(temp);
    temp.to=a;
    e[b].push_back(temp);
}

使用的时候,可以写e[i][j],但是注意,这里的i代表着起点,但是j不代表终点,只代表一个存储顺序。最终需要知道终点需要先

edge temp=e[i][j];