求优化代码复杂度

回复帖子

@CSP_Sept  2020-03-27 10:04 回复

题目

见此

变量用处

  1. $dis[i]$:讨厌 $i$ 频道的最年轻的老人
  2. $like[i]$:第 $i$ 个老人最喜欢的频道

    思路

    纯模拟

    求助类型

    求优化,记录

    代码

    #include <cstdio>
    using namespace std;
    #define MAXN 100010
    int like[MAXN],dis[MAXN];
    int n,m,p;
    int main(){
    scanf("%d%d%d",&n,&m,&p);
    for(int i=1;i<=n;i++){
        int a,b;
        scanf("%d%d",&a,&b);
        like[i]=a;
        if(dis[b]==0) dis[b]=i;
    }
    int ans=0,t=p;
    while(1){
        if(!dis[p]) break;
        p=like[dis[p]];
        if(p==t&&ans){
            printf("-1");
            return 0;
        }
        ans++;
    }
    printf("%d",ans);
    return 0;
    }
@CSP_Sept  2020-03-27 10:05 回复 举报

代码:

#include <cstdio>

using namespace std;
#define MAXN 100010
int like[MAXN],dis[MAXN];
int n,m,p;
int main(){
    scanf("%d%d%d",&n,&m,&p);
        for(int i=1;i<=n;i++){
        int a,b;
        scanf("%d%d",&a,&b);
        like[i]=a;
        if(dis[b]==0) dis[b]=i;
    }
    int ans=0,t=p;
    while(1){
        if(!dis[p]) break;
        p=like[dis[p]];
        if(p==t&&ans){
            printf("-1");
            return 0;
        }
        ans++;
    }
    printf("%d",ans);
    return 0;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。