【问题描述】
已知一个有向图,如下图所示,试编写一个算法,以邻接矩阵作为存储结构,计算各顶点的入度和出度。
【输入形式】顶点数,边数,权值矩阵
【输出形式】顶点及入度和出度
【样例输入】6 9
0 22 16 10000 10000 10000
2 0 10000 10000 9 10000
10000 4 0 10000 10000 8
10000 10000 10000 0 10000 10000
10000 10000 10000 15 0 10000
10000 10000 10000 7 12 0
【样例输出】
0 1 2
1 2 2
2 1 2
3 2 0
4 2 1
5 1 2
#include<iostream>
#include<string>
using namespace std;
# define Maxsize 20
struct Graph {
int n, e;
int vertex[Maxsize];
int edge[Maxsize][Maxsize];
};
void CreateMatrix(Graph& G, int vertex)
{
G.n = vertex;
for (int i = 0; i < G.n; i++)
{
for (int j = 0; j < G.n; j++)
{
int num;
cin >> num;
G.edge[i][j] = num;
}
}
}
int rudu(int dian, Graph &G)
{
int count = 0;
for (int i = 0; i < G.n; i++)
{
if (0 < G.edge[i][dian]&& G.edge[i][dian]<10000)
count++;
}
return count;
}
int chudu(int dian, Graph G)
{
int count = 0;
for (int i = 0; i < G.n; i++)
{
if (0 < G.edge[dian][i]&& G.edge[dian][i] < 10000)
count++;
}
return count;
}
int main()
{
int vertex;
int side;
cin >> vertex;
cin >> side;
Graph G;
CreateMatrix(G, vertex);
for (int i = 0; i < vertex; i++)
{
cout << i << " " << rudu(i, G) << " " << chudu(i, G) << endl;
}
return 0;
}