问题标题: 酷町堂:6170   查询两点之间边的数量

0
0
已解决
张韬
张韬
资深守护
资深守护

 

6170   查询两点之间边的数量

题目描述 Description

如果在任意两点之间最多只有一条边,那么这个图就是一个简单图。如果某两点之间不止一条边,这些边就叫做重边。这个图就叫做多重图。

现在给出一个无向的多重图,要查询任意两点之间边的个数。

输入描述 Input Description

第一行,两个整数,n m
接下来m行,每行两个空格隔开的整数,x y,表示x和y之间存在一条边
接下来1行,一个整数q,表示询问的个数
接下来q行,每行两个整数,x y,表示要查询x和y之间是否存在边

输出描述 Output Description

q行,每行一个整数,第i行的是第i个查询的结果

样例输入 Sample Input

3 6 1 2 1 2 1 3 1 3 1 3 2 3 3 2 1 1 3 3 2

样例输出 Sample Output

2 3 1

数据范围及提示 Data Size & Hint

n<=1000

#include <iostream>
#include <cmath> 
#include <vector>
using namespace std;
int n,m,x,y,q;
vector<int> G[10005];
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    cin>>q;
    for(int i=1;i<=q;i++){
        cin>>x>>y;
        cout<<min(G[x].size(),G[y].size())<<endl;
    }
    return 0;

0分代码

大佬们,请问哪错了?


0
已采纳
陈正朔
陈正朔
初级光能
初级光能

明明是临接表存储,你这是什么?

输入时

cin>>x>>y;
f[x][y]++;
f[y][x]++;

输出时

cin>>x>>y;
cout<<f[x][y]<<endl;

即可

我要回答