图论入门(例题题解)

一、题目描述

假设用一个 n×n的数组 a
来描述一个有向图的邻接矩阵:

(1)编写一个函数确定一个顶点的出度

(2)编写一个函数确定一个顶点的入度

(3)编写一个函数确定图中边的数目
输入格式
第一行:节点总数 n、指定节点 m。

下面n行:有向图的邻接矩阵

输出格式
第一行包括三个数据:节点编号 m 的出度、m 的入度(之间用一个空格隔开)。

第二行包括一个数据:图中边的总数。
Sample Input
5 3
0 4 2 2 3
2 0 1 5 10
2 0 0 4 0
0 3 7 0 7
6 2 0 0 0
Sample Output
3 2 3
15

二、解题思路

出度为该顶点到其他顶点的边总数,入度为其他顶点到该顶点的边总数,矩阵存图跑循环查找就行

三、AC代码

#include <iostream>
using namespace std;
const int MX = 1e3 + 7;
int n, m, mp[MX][MX];

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> mp[i][j];
		}
	}
	int a, b, c;   a = b = c =0;

	for (int i = 1; i <= n; i++) {
		if (mp[m][i]) a++;
	}

	for (int i = 1; i <= n; i++) {
		if (mp[i][m]) b++;
	}

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (mp[i][j]) c++;
		}
	}
	cout << m << " " << a << " " << b << endl;
	cout << c << endl;
	return 0;
}

你可能感兴趣的:(#,题解,图论,数据结构)