比赛 NOIP2025模拟赛4 评测结果 AAAAAAAAAAAAAAATTTTT
题目名称 Daily Commute 最终得分 75
用户昵称 汐汐很希希 运行时间 10.651 s
代码语言 C++ 内存使用 9.49 MiB
提交时间 2025-11-27 10:58:32
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
int dis[200005];
vector<int>g[200005];
int s[200005]; 
void bfs(){
	for(int i=1;i<n;i++) dis[i]=2e9;
	queue<int>q;
	q.push(n);
	while(q.size()){
		int u=q.front();
		q.pop();
		for(int i=0;i<g[u].size();i++){
			int v=g[u][i];
			if(dis[v]==2e9){
				q.push(v);
				dis[v]=dis[u]+1; 
			}
		}
	}
	return;
}
int main()
{
	freopen("Commute.in","r",stdin);
    freopen("Commute.out","w",stdout);
	
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n>>m>>q;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		g[v].push_back(u);
	}
	for(int i=1;i<=n;i++) cin>>s[i];
	bfs();
	for(int i=1;i<=q;i++){
		int x,y;
		cin>>x>>y;
		swap(s[x],s[y]);
		int minn=2e9;
		for(int j=1;j<=n;j++){
			minn=min(minn,dis[s[j]]+j-1);
		}
		cout<<minn<<'\n';
	}
	return 0;
}