一路成长 level
获赞
299
粉丝
4
关注
3
看过 TA
15
东北大学
2019
C++
IP属地:北京
暂未填写个人简介
私信
关注
2018-09-04 11:42
已编辑
东北大学 C++
思路:时间紧张 什么图啊 树啊 都觉得不好实现 用map最简单了 把所有已知的信息先存入map 存入的时候(1)确定根  谁和根比较都是根的孩子 (2)兄弟关系,如果a b 的祖先相同,那么肯定是兄弟 (3)祖先关系 可能不是直系需要while循环判断 (4)如果都判断完毕不是祖先,那么肯定是没关系 代码如下:ac38% 不知道哪种自己没考虑到~欢迎大佬指出! #include<iostream> #include<map> using namespace std; int main() {     int n;   &n...
3面试,1个offer: #include<iostream>  #include<vector>  #include<stack>  #include<queue>  #include<unordered_map>  #include<string>  #include<map>  #include<cstring>  #include<algorithm>  using namespace  std;     int main()      {                  int n;         cin>>n;         map<int,int> m;         for(int i=0;i<n;i++)         {             int a,b;             cin>>a>>b;             m[a]=b;         }         int qn;         cin>>qn;         vector<int> fir;         vector<int> sec;         for(int i=0;i<qn;i++)         {             int aa,bb;             cin>>aa>>bb;             fir.push_back(aa);             sec.push_back(bb);         }         vector<int> ans;         for(int i=0;i<qn;i++)         {             bool flag1=false;             bool flag2=false;             if(m.find(fir[i])==m.end()&&m.find(sec[i])==m.end())             {                 ans.push_back(0);                 break;             }             int temp=fir[i];             while(m.find(temp)!=m.end())             {                 if(m[temp]==sec[i])                 {                     flag1=true;                     ans.push_back(2);                      break;                 }                 else                 {                     temp=m[temp];                 }             }             int temp2=sec[i];             while(m.find(temp2)!=m.end())             {                 if(m[temp2]==fir[i])                 {                     flag2=true;                     ans.push_back(1);                      break;                 }                 else                 {                     temp2=m[temp2];                 }             }             if(!flag1&&!flag2)                ans.push_back(0);         }         int size2=ans.size();         for(int i=0;i<size2;i++)         {             cout<<ans[i]<<endl;         }                                                                          return 0;              }                     
投递贝壳找房等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务