死宅日志——图store

图是由顶点和边(点与点之间的关系)组成的集合。大致分为有向图和无向图听名字就知道是什么了吧。如:
在这里插入图片描述
以该点为终点的边的数目和,称之为入度。以该点为起点的边的数目和称之为出度。度数等于入度+出度。从点a到点b有路径,我们称其为ab连通。若图中任意顶点之间都连通,则称该图为连通图。无向图中的极大连通子图,称之为连通分量。相当于有几个岛。我们称边的属性的大小为权,相当于道路的长短。这里只说两种图的储存结构。邻接表和邻接矩阵。都是用数组储存的。
邻接矩阵:若用a来记录一个图,a[i][j],等于0则i.j无连接,不等于0则有连接i.j(可以是权值也可以是一)。如
在这里插入图片描述
变成矩阵就是:
0 1 1 1 0
1 0 1 0 1
1 1 0 0 1
1 0 0 0 1
0 1 1 1 0
邻接表:准确的说是边的属性记录的集合。
在这里插入图片描述

typeof struct edge
{
int y,v,next; //y表示这条边的终点编号,v是权值;
}; //next表示同起点下条边的编号是多少
edge e[maxm+10]; //边表。
int link[maxn+10],t; //起点表 link[i]表示由i出去的第一条边的下标是多少
void insert(int ss,int ee,int vv)//ss为起点,ee为终点,vv为权值。
{
e[++t].y=ee;//t表示有t条边
e[t].v=vv;
e[t].next=link[ss];//同起点的下一条边的编号(现在是上一条边运算的时候倒过来就是下一条了)
link[ss]=t;//当前边的编号为t
}
void init()
{
int i,xx,yy,zz;;
scanf("%d%d %d",&n,&p,&m);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&xx,&yy,&zz);//起点 终点 权
insert(xx,yy,zz);
insert(yy,xx,zz); //这里插入的是无向图,所以两条边都要插入。方向不同编号也不同
}
}

还有:
Struct edge
{
int x,y //起点和终点
int v //权值
} e[maxm];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值