首页 > 其他分享 >luoguP3398 仓鼠找 sugar

luoguP3398 仓鼠找 sugar

时间:2024-07-22 19:29:57浏览次数:12  
标签:head 仓鼠 dist int d% sugar x2 luoguP3398 dis

思路

图论,最简单的解法:

LCA加路径长度判断不等式

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int f[N][25], d[N], dis[N], T, n, m, tot, t, ver[2 * N], next1[2 * N], head[N];
queue q;
void add(int x, int y) {
ver[++tot] = y;
next1[tot] = head[x];
head[x] = tot;
}
int lca(int x, int y) {
if (d[x] > d[y]) swap(x, y);
for (int i = t; i >= 0; i--) if (d[f[y][i]] >= d[x]) y = f[y][i];
if (x == y) return x;
for (int i = t; i >= 0; i--) if (f[x][i] != f[y][i]) x = f[x][i], y = f[y][i];
return f[x][0];
}
int dist(int a, int b) {
return dis[a] + dis[b] - 2 * dis[lca(a, b)];
}
int main() {
scanf("%d%d", &n, &m);
t = (int)(log(n) / log(2)) + 1;
for (int i = 1; i <= n; i++) head[i] = d[i] = 0;
for (int i = 1; i < n; i++) {
int x, y;
scanf("%d%d", &x, &y);
add(x, y);
add(y, x);
}
q.push(1);
d[1] = 1;
while (q.size()) {
int x = q.front();
q.pop();
for (int i = head[x]; i; i = next1[i]) {
int y = ver[i];
if (d[y]) continue;
d[y] = d[x] + 1;
dis[y] = dis[x] + 1;
f[y][0] = x;
for (int j = 1; j <= t; j++)
f[y][j] = f[f[y][j - 1]][j - 1];
q.push(y);
}
}
for (int i = 1; i <= m; i++) {
int x1, y1, x2, y2;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
if (dist(x1, y1) + dist(x2, y2) >= dist(x1, x2) + dist(y1, y2)) printf("Y\n");
else printf("N\n");
}
return 0;
}

标签:head,仓鼠,dist,int,d%,sugar,x2,luoguP3398,dis
From: https://www.cnblogs.com/mcr130102/p/18316732

相关文章

  • 使用SqlSugar操作MySQL/SQL Server数据库
    一、框架简介SqlSugar 是一款老牌.NET开源ORM框架,由果糖大数据科技团队维护和更新,开箱即用最易上手的ORM 优点:【生态丰富】【高性能】【超简单】【功能全面】【多库兼容】【适合产品】 二.SqlSugar连接MySQL数据库publicclassMySqlCNHelper:Singleton......
  • SQLSugar 基本语法+数据库读写分离
    面向对象的操作数据库,相比EFCore、Dapper等其他ORM框架性能支持性能轻便快捷,数据库的读写分离能大大减轻数据库的压力一、NuGet下载安装SqlSugarCore二、实例化SqlSugarCore---包含数据库链接---指定数据库类型---增删改查,上代码这里演示使用控制台程序usingSqlSugar;......
  • ORM - SqlSugar
    //SqlSugarHelper.DemoDbContext.GenerateModels();varlist=SqlSugarHelper.DemoDbContext.Query<ORMClsLib.dbo.DemoEntity>();varitem=newORMClsLib.dbo.DemoEntity(){operatorName="test",};SqlSugarHelper.DemoDbContext.InsertOrUpdat......
  • sqlsugar 分表
    一、首字母分表安装hyjiacan.pinyin4net>dotnetaddpackagehyjiacan.pinyin4net--version4.1.1创建分表服务///<summary>///Apricot分表///</summary>publicclassApricotSplitTableService:ISplitTableService{///<summary>///sqlsugar......
  • SqlSugar操作Sqlite数据库
    SqlSugar操作Sqlite数据库SqlSugar官网.netcore和.net5/.net6/.net7/.net8/.net9/.net10  安装SqlSugarCore。netframework4.6+   安装SqlSugar。以下代码都在一个SqlSugarMethod类中。获得数据库对象:  这里要注意的是FilePath路径为生成程序的目录\bin\Debug\ne......
  • SqlSugar基础用法
    SQLSugar是什么**1.轻量级ORM框架,专为.NETCORE开发人员设计,它提供了简单、高效的方式来处理数据库操作,使开发人员能够更轻松地与数据库进行交互2.简化数据库操作和数据访问,允许开发人员在C#代码中直接操作数据库,而不需要编写复杂的SQL语句3.支持多种数据库,包括但不限于MYSQ......
  • [题解]P3398 仓鼠找 sugar
    P3398仓鼠找sugar题意简述给定一个\(N\)个节点的树形结构。接下来有\(q\)次询问,每次询问给定\(4\)个节点\(a,b,c,d\),请计算\(a\)到\(b\)的简单路径和\(c\)到\(d\)的简单路径是否有相交的节点。对于每个询问,输出Y/N表示答案。解题思路&Code通过手玩样例可以发现,\(a\simb\)......
  • ORM Sql Sugar资料
    轻量级、高性能SqlSugar开源ORM   SqlSugar入门    SqlSugar处理、封装支持多数据库并使实际业务开发中     基于SqlSugar的开发框架循序渐进介绍ORM学习笔记:T4入门及生成数据库实体类......
  • sqlSugar 使用原生模式链接数据库
    usingSystem.Reflection;usingzhulongxu_webapi_pro.Tools;namespacezhulongxu_webapi_pro.Services{///<summary>///初始化数据库///</summary>publicstaticclassInitDataBaseService{publicstaticvoidInitDataBase......
  • SqlSugar入门使用
    官网:https://www.donet5.com/home/docunget:SqlSugarCore1.整体目录结果 2. DbContext.cs文件内容usingSqlSugar;usingSystem.Diagnostics;usingSystem.Reflection;usingWEBAPI.Model.Entitys;namespaceWEBAPI.Commonn{publicclassDbContext{......