# U279159 【图的存储】邻接矩阵无向图
U279159 【图的存储】邻接矩阵无向图
题目描述
一个国家有n个城市编号为1至n,被已有的m条高速公路连接。现在政府决定建造新的高速公路,有q项提议,每项提议计划在x,y城市间建造一条新的高速公路。当然有些提议中某两个城市间可能已经存在高速公路了,那么这项提议将会取消,反之则会通过
输入格式
第一行三个整数n,m,q
接下来m行,每行两个整数x,y,表示已有的高速公路
接下来q行,每行两个整数x,y,表示一项提议
输出格式
对于每个x,y如果通过输出Accepted,否则输出Cancel
输入输出样例 #1
输入 #1
5 5 3
1 2
2 3
3 4
4 5
5 3
5 4
1 5
1 2
输出 #1
Cancel
Accepted
Cancel
说明/提示
$0<n,m<=100,q<=n*(n-1),1<=x,y<=n$
题目Accepted的提议不会立即建造,不要当作已存在
构造邻接矩阵
点击查看代码
for (int i = 0; i < m; i++) {
int x, y;
scanf("%d %d", &x, &y);
adj[x][y] = 1;
adj[y][x] = 1; //无向图
}
点击查看代码
#include <stdio.h>
#define MAXN 105
int adj[MAXN][MAXN];
int main(){
int n,m,q;
scanf("%d%d%d",&n, &m, &q);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
adj[i][j] = 0;
}
}
for (int i = 0; i < m; i++) {
int x, y;
scanf("%d %d", &x, &y);
adj[x][y] = 1;
adj[y][x] = 1; //无向图
}
for (int i = 0; i < q; i++) {
int x, y;
scanf("%d %d", &x, &y);
if (adj[x][y]) {
printf("Cancel\n"); //如果已存在,取消该提议
} else {
printf("Accepted\n"); //否则接受提议
}
}
return 0;

浙公网安备 33010602011771号