您的位置:首页 > 其它

存图(8)

2020-02-02 19:45 141 查看

存图

本来这个东西不写了,因为太简单了。但是为防止产生疑问,还是给大家写一下。

先说什么是图:
图由点和边组成记顶点集合为V 边集合为E的图为G=(V,E)。简单来说图就是把一个具体的问题进行抽象化。你可以把边当作道路,把点当作房子。

再说图的种类:(其实就是看带不带箭头)
无向图:图中的所有边不分方向,你既可以顺行也可以逆行。
有向图:图中的所有边都是有方向的,你只能沿着边的方向走。
无权图:你不知道两点之间的距离
带权图:你知道两点之间的距离

接下来就是存图的方式了:

邻接矩阵:(不能存点的数量多的图)
我们定义一个数组a[MAXN][MAXN]; 那么存图方式就是:a[i][j]=val;
对于无向图,就代表i和j之间有一条权值为val的边,如果是无权图,val=1。
对于有向图,就代表i->j(j->i你不清楚)有一条权值为val的边,无权图的话val=1。

邻接表法:(用vector存)

vector <int> e[MAXN];//edge
vector <int> v[MAXN];//val
cin>>a>>b>>c;
e[a].push_back(b);
v[a].push_back(c);
e[b].push_back(a);
v[b].push_back(c);
//假如还有距离,就要用到前面学的pair了
vector < pair <int ,int > > V [ maxn ];
V [ x ]. push_back ( make_pair (y , z ));  //xy为两点,z为距离
V [ y ]. push_back ( make_pair (x , z ));

看似有点难,其实后面慢慢就会了。。。
链式前向星
我的天,这个是真的强,但是我是真的不会,若读者想了解,可以问度娘,嘿嘿!!!

  • 点赞
  • 收藏
  • 分享
  • 文章举报
〆℡小短腿走快点ゝ 发布了30 篇原创文章 · 获赞 1 · 访问量 1420 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: