[题解]CF1321D Navigation System
思路:从终点反向bfs,求出每个点到终点的距离
然后枚举原图的每一条边,计算出度
最后对于路径上每个点判断即可
code
#include<bits/stdc++.h>
namespace my_std
{
using namespace std;
#define rep(i,a,b) for (int i=(a);i<=(b);i++)
#define drep(i,a,b) for (int i=(a);i>=(b);i--)
#define go(u) for (int i=head[(u)];i;i=e[i].nxt)
#define pf printf
#define writeln(x) write(x),putchar('\n')
#define writesp(x) write(x),putchar(' ')
#define mem(x,v) memset(x,v,sizeof(x))
typedef long long ll;
const int INF=0x7fffffff;
inline int read()
{
int sum=0,f=1;
char c=0;
while (!isdigit(c))
{
if (c=='-') f=-1;
c=getchar();
}
while (isdigit(c))
{
sum=(sum<<1)+(sum<<3)+(c^48);
c=getchar();
}
return sum*f;
}
void write(int k)
{
if (k<0) putchar('-'),k=-k;
if (k>=10) write(k/10);
putchar(k%10+'0');
}
}
using namespace my_std;
const int N=200010;
int n,m,head[N],HEAD[N];
int s,t,cnt1,cnt2;
int dis[N],p[N],out[N];
int maxx=0,minn=0;
struct edge
{
int to,nxt;
}e[N<<1],E[N<<1];
void add1(int u,int v)
{
e[++cnt1].to=v;
e[cnt1].nxt=head[u];
head[u]=cnt1;
}
void add2(int u,int v)
{
E[++cnt2].to=v;
E[cnt2].nxt=HEAD[u];
HEAD[u]=cnt2;
}
void bfs(int f)
{
queue<int>q;
dis[f]=1;
q.push(f);
while (!q.empty())
{
int u=q.front();
for (int i=HEAD[u];i;i=E[i].nxt)
{
int v=E[i].to;
if (dis[v]==0)
{
dis[v]=dis[u]+1;
q.push(v);
}
}
q.pop();
}
}
int main()
{
n=read(),m=read();
int u,v;
rep(i,1,m)
{
u=read(),v=read();
add1(u,v),add2(v,u);
}
int size=read();
rep(i,1,size) p[i]=read();
bfs(p[size]);
rep(u,1,n) go(u)
{
int v=e[i].to;
if (dis[v]+1==dis[u])
{
out[u]++;
}
}
rep(i,1,size-1)
{
if (dis[p[i]]!=dis[p[i+1]]+1) minn++,maxx++;
else if (dis[p[i]]==dis[p[i+1]]+1&&out[p[i]]>=2) maxx++;
}
writesp(minn),writeln(maxx);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端