简单的BFS,练习基础 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #define dec(i,x,y) for(register int i=x;i>=y;i--) #define LL long long #define In freopen("7.in","r",stdin) #define In2 freopen("8.i…
题面 一道特殊的最短路题. 给一个 n n n 个点 m m m 条有向边的图,每条边上有数字 0 \tt0 0 或 1 \tt1 1 ,定义一个路径的长度为这个路径上依次经过的边上的数字拼在一起后在二进制下的值(前导 0 \tt0 0 对该路径长度没有贡献).现在需要你求出从 1 1 1 号点出发,到 2 ∼ n 2\sim n 2∼n 号点的路径的长度的最小值. n ≤ 1 0 6 , m ≤ 2 ⋅ 1 0 6 . n\leq10^6,m\leq2\cdot10^6. n≤106,m≤2⋅…
题目描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在满足条件 1 的情况下使路径最短. 注意:图 G 中可能存在重边和自环,题目保证终点没有出边. 请你输出符合条件的路径的长度. 输入格式 第一行有两个用一个空格隔开的整数 n 和 m,表示图有 n 个点和 m 条边. 接下来的 m 行每行 2 个整数 x,y,之间用一个空格隔开,表示有一条边从点 x 指向点y. 最…
据说dfs会爆栈,写一个 BFS 序更新就好了~ #include <bits/stdc++.h> #define N 1000005 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; queue<int>q; int edges,hd[N],to[N<<1],nex[N<<1],val[N<&…
寻找道路 题目链接 这道题非常的水,按照题意, 先反向建边,从终点搜索,标记出可以到达终点的点 然后枚举一遍,判断出符合条件1的点 再从起点搜索一遍就可以了 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define N 10010 #define M 200010 int n,m,Head[N],_Head[N],dis[N],tot,s,t; int que[M…