資料結構作業——用鄰接表表示無向網

Evrse發表於2020-12-06

資料結構作業——用鄰接表表示無向網

實現程式碼

#pragma GCC optimize ("O3")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<list>
#include<queue>
#include<stack>
#include<vector>

using namespace std;

#define fori(i,a,b) for(int i=(a);i<(b);i++)
#define ford(i,a,b) for(int i=(a)-1;i>=(b);i--)
#define mem(a,b) memset((a),(b),sizeof(a));
#define all(x) (x).begin(),(x).end()

template<class T, class T2>bool ckmax(T& a, T2 b) { return a < b ? a = b, 1 : 0; }
template<class T, class T2>bool ckmin(T& a, T2 b) { return a > b ? a = b, 1 : 0; }

typedef long long ll;

const int maxn = 1e3 + 8;
struct edge
{
	int to, value;
};
vector<edge>nodes[maxn];
void addedge(int a, int b, int value)
{
	nodes[a].push_back({ b, value });
	nodes[b].push_back({ a, value });
}
int main(void)
{
	int n, m; // 點的個數、邊的個數
	int a, b, v; // 邊的頂點、邊權
	int len;
	puts("請輸入點的個數、邊的個數:");
	scanf("%d %d", &n, &m);
	puts("請輸入每條邊的起點、終點及邊權:");
	fori(i, 0, m)
	{
		scanf("%d %d %d", &a, &b, &v);
		addedge(a, b, v);
	}
	fori(i, 1, n + 1)
	{
		for (edge temp : nodes[i])
		{
			printf("from:%d to:%d value:%d\n", i, temp.to, temp.value);
		}
	}
	return 0;
}

相關文章