邻接表&链式前向星

//邻接表
struct edge{
	int v,w;
};
vector <edge> g[N];
for(int i=0;i<m;i++){
	cin >> t1 >> t2 >> t3;
	g[t1].push_back({t2,t3});
}
//遍历
for(auto a:g[u]){
	cout << a.v << " " << a.w;
}
//链式前向星 
struct node {
	int to;
	int w;
	int nxt;
} edge[N];

int head[N],cnt=0;

void add(int u,int v,int w){
	edge[cnt].to = v;
	edge[cnt].w = w;
	edge[cnt].nxt = head[u];
	head[u] = cnt++;
}

int main() {
    memset(head,-1,sizeof(head));
    int n,m;
    cin >> n >> m;
    int t1,t2,t3;
    //存图
	for(int i=1;i<=n;i++){
    	cin >> t1 >> t2 >> t3;
    	add(t1,t2,t3);
	}
	//遍历方法 
    for(int i=1;i<=n;i++){
    	cout << i << endl;
    	for(int j=head[i];j!=-1;j=edge[j].nxt){
    		cout << i << " " << edge[j].to << " " << edge[j].w << endl;
		}
		cout << endl;
	}
    return 0;
}
posted @ 2024-02-25 12:10  Nijika  阅读(9)  评论(0)    收藏  举报