当前位置:网站首页>6134. Find the closest node to the given two nodes - force double hundred code
6134. Find the closest node to the given two nodes - force double hundred code
2022-08-01 23:10:00 【Mr Gao】
6134. 找到离给定两个节点最近的节点
给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,每个节点 至多 有一条出边.
有向图用大小为 n 下标从 0 开始的数组 edges 表示,表示节点 i 有一条有向边指向 edges[i] .如果节点 i 没有出边,那么 edges[i] == -1 .
同时给你两个节点 node1 和 node2 .
请你返回一个从 node1 和 node2 都能到达节点的编号,使节点 node1 和节点 node2 到这个节点的距离 较大值最小化.如果有多个答案,请返回 最小 的节点编号.如果答案不存在,返回 -1 .
注意 edges 可能包含环.
示例 1:
输入:edges = [2,2,3,-1], node1 = 0, node2 = 1
输出:2
解释:从节点 0 到节点 2 的距离为 1 ,从节点 1 到节点 2 的距离为 1 .
两个距离的较大值为 1 .我们无法得到一个比 1 更小的较大值,所以我们返回节点 2 .
示例 2:
输入:edges = [1,2,-1], node1 = 0, node2 = 2
输出:2
解释:节点 0 到节点 2 的距离为 2 ,节点 2 到它自己的距离为 0 .
两个距离的较大值为 2 .我们无法得到一个比 2 更小的较大值,所以我们返回节点 2 .
解题代码如下:
void dfs( int* edges, int edgesSize, int node,int *dnode,int d,int *r){
r[node]++;
if(d<dnode[node]&&r[node]<=1){
dnode[node]=d;
}
if(edges[node]!=-1&&r[node]<2){
dfs(edges,edgesSize,edges[node],dnode,d+1,r);
}
}
void dfs2( int* edges, int edgesSize, int node,int *dnode,int d,int *r){
r[node]++;
// printf("ndoe %d ",node);
if(d>dnode[node]&&r[node]<=1){
dnode[node]=d;
}
// printf("edges[node] r[node] %d %d ",edges[node],r[node]);
if(edges[node]!=-1&&r[node]<2){
// printf("dfasfsd");
dfs2(edges,edgesSize,edges[node],dnode,d+1,r);
// printf(" sdfasfsd");
}
}
int closestMeetingNode(int* edges, int edgesSize, int node1, int node2){
int *dnode=(int *)malloc(sizeof(int )*edgesSize);
int *r=(int *)malloc(sizeof(int )*edgesSize);
int *r2=(int *)malloc(sizeof(int )*edgesSize);
int i;
for(i=0;i<edgesSize;i++){
dnode[i]=1000000;
r[i]=0;
r2[i]=0;
}
dfs(edges,edgesSize,node1,dnode,0,r);
dfs2(edges,edgesSize,node2,dnode,0,r2);
int min=10000000;
for(i=0;i<edgesSize;i++){
if(dnode[i]<min&&r[i]>=1&&r2[i]>=1){
min=dnode[i];
}
}
//printf("min %d ",min);
for(i=0;i<edgesSize;i++){
if(dnode[i]==min&&r[i]>=1&&r2[i]>=1){
return i;
}
}
return -1;
}
边栏推荐
- CAKE:一个用于多视图知识图谱补全的可扩展性常识感知框架
- 牛客多校4 A.Task Computing 思维
- Three, mysql storage engine - building database and table operation
- 别看了,这就是你的题呀
- IDEA common plugins
- Wechat Gymnasium Reservation Mini Program Graduation Design Finished Work Mini Program Graduation Design Finished Product (2) Mini Program Function
- ROS2初级知识(8):Launching启动多节点
- SQL29 Calculate the average next day retention rate of users
- 10年稳定性保障经验总结,故障复盘要回答哪三大关键问题?|TakinTalks大咖分享
- SQL Server(设计数据库--存储过程--触发器)
猜你喜欢

解决yolov5训练时出现:“AssertionError: train: No labels in VOCData/dataSet_path/train.cache. Can not train ”

TCP 可靠吗?为什么?
SQL29 Calculate the average next day retention rate of users

美赞臣EDI 940仓库装运订单详解

What is CICD excuse me

cmd指令

03. GO language variable definition, function

sys_kill系统调用

xctf attack and defense world web master advanced area webshell

y84.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十五)
随机推荐
关于ETL的两种架构(ETL架构和ELT架构)
华为无线设备配置全局双链路冷备份(AC全局配置方式)
03. GO language variable definition, function
CF1705D Mark and Lightbulbs
xctf attack and defense world web master advanced area webshell
SQL Server(设计数据库--存储过程--触发器)
y84.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十五)
drf生成序列化类代码
测试岗月薪5-9k,如何实现涨薪到25k?
(Translation) How the contrasting color of the button guides the user's actions
从0到1:图文投票小程序设计与研发笔记
The monthly salary of the test post is 5-9k, how to increase the salary to 25k?
复现gallerycms字符长度限制短域名绕过
如何使用pywinauto和pyautogui将动漫小姐姐链接请回家
excel vertical to horizontal
2022年最新河北建筑八大员(机械员)模拟考试题库及答案
隔离和降级
SRv6 L3VPN的工作原理
Access the selected node in the console
TCP 可靠吗?为什么?