#美团笔试#
第三题我的解法:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<tuple>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<stdlib.h>
#include<cstring>
#include<algorithm>
#include<map>
#include<unordered_map>
using namespace std;

vector<int>dfs(vector<int>a,vector<vector<int>>edge, int pre, int cur, int goal)
{
    if (cur == goal) return { cur };
    for (int i = 0; i < edge[cur].size(); i++)
    {
        int p = edge[cur][i];
        if (p == pre)continue;
        vector<int>sub = dfs(a, edge, cur, p, goal);
        if (sub.size() != 0)
        {
            sub.push_back(cur);
            return sub;
        }
    }
    return {};
}

int main()
{
    int n, m;
    cin >> n >> m;
    vector<int>a(n + 1);
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    vector<vector<int>>edge(n + 1);
    for (int i = 1; i < n; i++)
    {
        int u, v;
        cin >> u >> v;
        edge[u].push_back(v);
        edge[v].push_back(u);
    }
    for (int i = 0; i < m; i++)
    {
        int x, u, v;
        cin >> x >> u >> v;
        if (x == 1)
        {
            vector<int>road = dfs(a, edge, 0, u, v);
            for (int i=0;i<road.size();i++)
            {
                int num = road[i];
                a[num] = a[num] ? 0 : 1;
            }
        }
        if (x == 2)
        {
            vector<int>road = dfs(a, edge, 0, u, v);
            int ans = 0;
            int flag = 1;
            for (int i = 0; i < road.size(); i++)
            {
                ans += a[road[i]] * flag;
                flag *= 2;
            }
            cout << ans << endl;
        }
    }
    return 0;
}
全部评论
差一点,时间不够了,我也用的dfs,我感觉可以把uv路径dfs完就缓存起来,这样一条路径查一次就好了
点赞 回复 分享
发布于 昨天 07:55 江苏

相关推荐

头像
昨天 15:56
东北大学 Java
做了这周的美团笔试加&nbsp;ai&nbsp;面,笔试大概&nbsp;6&nbsp;道大模型训练方面问题,4&nbsp;道后端常规题,题型和上周差不多。算法&nbsp;a&nbsp;了两道,第一题看着吓人实则签到送分,第二题也是比较经典的括号相关问题,第三题一看做都不想做直接交卷走人了。据说美团几乎不怎么看笔试。ai&nbsp;面试方面总体体验还不错,&nbsp;ai&nbsp;面试官笑呵呵的一直点头,一直瞎说也点头,整体很轻松😂。最开始用&nbsp;edge&nbsp;浏览器进不去不知道为什么,后来换个夸克就好了。结合别人的面经来看,整体题型也比较固定,上来先选语言(java,c++,go),然后讲下自我介绍和&nbsp;ai&nbsp;使用情况,然后会再追问一下&nbsp;具体怎么用&nbsp;ai&nbsp;的。之后就是出三四道八股题,第一题是计网(udptcpipv4ipv6httphttps&nbsp;这些),第二题是根据选择的语言出,三四题差不多是中间件比如&nbsp;mysql,redis,mq&nbsp;这些。每到题回答之后基本都会追问两到三个问题,这里的追问是根据你的回答来的,所以说回答的时候自己不熟悉的词一定要少说,尽量多强调自己会的知识点。然后第五题是系统设计题,会让你设计一个具体的系统,然后讲讲整体对象间的关系,数据库表设计,api&nbsp;设计等等,我遇到的是一个邀请系统,我看还有好多项目管理系统的。第六题是场景题,我遇到的是后端如何统计&nbsp;token&nbsp;以及一系列数据,最后做整合报表。这道题可以换题。然后五六题会追问三到四个问题左右,也是尽量答自己熟悉的知识点。第七题应该是个人经历相关,让我讲一个具体怎么顶住压力克服困难的经历。
27届求职交流
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务