作者 王东
单位 贵州师范学院
采用邻接表创建无向图G ,依次输出各顶点的度。
输入格式:
输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。
输入第二行为顶点的信息,每个顶点只能用一个字符表示。
依次输入j行,每行输入一条边依附的顶点。
输出格式:
依次输出各顶点的度,行末没有最后的空格。
输入样例:
5 7
ABCDE
AB
AD
BC
BE
CD
CE
DE
输出样例:
2 3 3 3 3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C++代码
#include <bits/stdc++.h>
using namespace std;
struct Node {
char content;
Node *next;
int length;
};
Node *arr[100];
int visit[100];
queue<Node *> q;
map<char, int> my_map;
int main() {
int n, m;
char x, y;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
arr[i] = new Node;
cin >> arr[i]->content;
arr[i]->next = NULL;
arr[i]->length = 0;
my_map.insert(pair<char, int>(arr[i]->content, i));
}
for (int i = 1; i <= m; i++) {
cin >> x >> y;
Node *new_node = new Node;
new_node->content = y;
new_node->next = NULL;
Node *p = arr[my_map[x]];
arr[my_map[x]]->length++;
while (p->next) p = p->next;
p->next = new_node;
new_node = new Node;
new_node->content = x;
new_node->next = NULL;
p = arr[my_map[y]];
arr[my_map[y]]->length++;
while (p->next) p = p->next;
p->next = new_node;
}
for (int i = 1; i <= n; i++) {
if (i == 1) cout << arr[i]->length;
else cout << " " << arr[i]->length;
}
cout << endl;
return 0;
}