邻接表的数组实现

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define MAXN 100000
#define MAXM 10000
int u[MAXM],v[MAXM],w[MAXM];//存边的信息
int first[MAXN],nextEdge[MAXM];//first存顶点的第一条边 //nextEdge存边的下一条边
int n,m;
int cnt;
//设边和顶点均从1开始存储
void Init(){//建图初始化
	cnt=0;
	memset(first,0,sizeof(first));
	memset(nextEdge,0,sizeof(nextEdge));
}
void Add(int x,int y,int z){//存边
	cnt++;
	u[cnt]=x;
	v[cnt]=y;
	w[cnt]=z;
	nextEdge[cnt]=first[x];
	first[x]=cnt;
}
int main(){
	int x,y,z;
	int start;
	cin>>n>>m;
	Init();
	for(int i=1;i<=m;i++){
		cin>>x>>y>>z;
		Add(x,y,z);
		Add(y,x,z);
	}
	/*
	for(int i=1;i<=n;i++){
		cout<<i<<':';
		for(int j=first[i];j;j=nextEdge[j]){
			cout<<' '<<v[j];
		}
		cout<<endl;
	}*/
	return 0;
}
形式和前向星差不多
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值