zoukankan      html  css  js  c++  java
  • 7-4 愿天下有情人都是失散多年的兄妹 (25 分)

    BFS做即可

    有一个点始终wa  

    因为数据中有人的编号为0! 真的恶心

    所以把标记数组改为-1即可

    #include<bits/stdc++.h>
    using namespace std;
    int fa[100050];
    int ma[100050];
    int vis[100050];
    
    void bfs(int a,int b)
    {
        int cnt=0;
        queue<int>q;
        q.push(a);
        q.push(b);
        while(!q.empty())
        {
            int u=q.front();
            q.pop();
            cnt+=2;
    
             if(cnt>60){printf("Yes
    ");return;}
             if(u==0){q.push(0);q.push(0);continue;}
            if(fa[u]==-1)q.push(0);
            else
            {
              if(vis[fa[u]]){printf("No
    ");return;}
              q.push(fa[u]);
              vis[fa[u]]=1;
            }
            if(ma[u]==-1)q.push(0);
            else
            {
              if(vis[ma[u]]){printf("No
    ");return;}
              q.push(ma[u]);
              vis[ma[u]]=1;
            }
        }
        printf("Yes
    ");
        return ;
    }
    
    int main()
    {
      int n;
      memset(fa,-1,sizeof fa);
      memset(ma,-1,sizeof ma);
      scanf("%d",&n);
      int a,b,c;
      char s[5];
      map<int ,int >mp;
      for(int i=0;i<n;i++)
      {
          scanf("%d%s%d%d",&a,s,&b,&c);
    
          if(s[0]=='M')mp[a]=1;
          else   mp[a]=0;
          fa[a]=b;mp[b]=1;
          ma[a]=c;mp[c]=0;
      }
    
      int k;
      scanf("%d",&k);
      while(k--)
      {
          int a,b;
          scanf("%d%d",&a,&b);
          if(mp[a]==mp[b])
          {
              printf("Never Mind
    ");continue;
          }
          else
            {memset(vis,0,sizeof vis);bfs(a,b);}
      }
        return 0;
    }
  • 相关阅读:
    alpha冲刺—Day8
    alpha冲刺—Day7
    alpha冲刺—冲刺计划&代码规范
    Linux安装jdk
    chrome插件开发-notification API注意事项
    VSCode远程连接Docker
    Idea发布项目到Docker
    开发环境配置
    Java设计模式之《单例模式》及应用场景
    使用Docker安装jenkins
  • 原文地址:https://www.cnblogs.com/bxd123/p/10391618.html
Copyright © 2011-2022 走看看