Double020 2019-02-22 15:39 采纳率: 0%
浏览 787

一道关于图的存储的题,为何我的代码一直报错Output Limit Exceeded?

描述

本题目考察大家图的存储的基本能力(建议大家将两种图的储存方式都试一下),题目将给大家n个点的信息(字符串,长度<=30),再给大家m条边的信息,最后提出k个问题,每个问题都是寻找每个点的邻接点。

输入
第一行:n,m,k
接下来n行,每行一个字符串,表示每个顶点的信息(字符串长度<=30)
接下来m行,每行两个数字a b,(0<=a,b <n 且a!=b)表示存在一条第a个点指向第b个点的边;
接下来k行,每行一个数字z,表示询问第z顶点所有的邻接点信息;
输出
一共k行,分别对应k个问题的答案:
如果询问的点,没有邻接点,那么输出0;
如果询问的点有多个邻接点,那么按照每个点(注意不是边)的输入顺序,进行输出,每个点的信息用空格隔开。
样例输入

5 7 5
A
B
C
E
F
0 1
1 2
2 4
0 3
4 0
4 1
3 2
0
2
3
4
1

样例输出

B E 
F 
C 
A B 
C 

***样例测试我是对的,但就是无法AC,一直提示Output Limit Exceeded

下面是代码,麻烦各位大神看看

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
char mp[10010];
vector<long long>a[10001];
int main(){
    cin>>n>>m>>k;
    for(int i=0;i<n;i++)cin>>mp[i];
    memset(a,0,sizeof(a));
    for(int j=1;j<=m;j++){
        int x,y,idx=0;
        cin>>x>>y;
        a[x].push_back(y);
    }
    for(int i=1;i<=k;i++){
        int t;
        cin>>t;
        if(a[t].size()==0)cout<<0;
        else for(int j=0;j<a[t].size();j++){cout<<mp[a[t][j]];
        if(j!=a[t].size()-1)cout<<" ";
        }
    if(i!=k)cout<<endl;
    }
    return 0;
} 
  • 写回答

1条回答

  • greatofdream 2019-02-22 16:18
    关注

    1.输入每行一个字符串,你好像认为都是字符,给了char数组存储,不正确,起码每隔31个char存一个字符串吧,或者字符串数组。
    2.数据集大小有给吗?里面给10001的大小很奇怪。
    3.如果是OJ的话一般对报错有说明,我不确定OUTPUT limit exceed指超出什么


    WA wrong answer?
    建议不要用vector了,很慢,而且不够简洁,建议用二维数组直接储存,这道题是有向图,那么用二维数组再合适不过,而且你的答案错误应该是
    #用点的顺序输出
    vector输出应该是按边输出的,用数组存储很简单就可以找到对应点,直接输出一列就按输入点输出了

    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试