# 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;

posted @ 2025-06-08 00:09  sirro1uta  阅读(19)  评论(0)    收藏  举报