邻接矩阵
  • 板块学术版
  • 楼主Hirro
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/17 20:59
  • 上次更新2023/11/17 21:01:09
查看原帖
邻接矩阵
772463
Hirro楼主2023/11/17 20:59
#include<bits/stdc++.h>
#define pll pair<int,int>
using namespace std;
const int N = 1e3;
int grap[N][N];//grap[i][j]表示i到j存在一条路径
signed main() {
	
	int n, m;//n个顶点,m条边
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			grap[i][j] = 0;//在用之前先全部置零
	//输入m条边
	
	/********************边没有权值时*********************/
	for (int i = 1; i <= m; i++) {
		int u, v;
		cin >> u >> v;
		//表示u节点到v节点连接了一条边
		//如果是有向图表示当前这条路只能从u节点到v节点
		grap[u][v] = 1;
		//如果是无向图表示当前这条路既能从u节点到v节点也能从u节点到v节点
		grap[v][u] = 1;//如果是无向图还要加上这句话表示也能从u节点到v节点
	}
	/**********************************************************/

	/********************边有权值时*********************/
	for (int i = 1; i <= m; i++) {
		int u, v,w;
		cin >> u >> v >> w;
		//表示u节点到v节点连接了一条边
		//如果是有向图表示当前这条路只能从u节点到v节点
		grap[u][v] = w;
		//如果是无向图表示当前这条路既能从u节点到v节点也能从u节点到v节点
		grap[v][u] = w;//如果是无向图还要加上这句话表示也能从u节点到v节点
	}
	
	/********************遍历所有节点所连边*********************/

	for (int i = 1; i <= n; i++) {

		for (int j = 1; j <= n; j++) {
			if (grap[i][j] == 0)continue;//如果是0表示不存在边能从u节点到v节点

			printf("exist edge %d to %d\n", i, j);
			printf("its value is %d\n", grap[i][j]);
		}

	}
	return 0;
}
2023/11/17 20:59
加载中...