Help
  • 板块学术版
  • 楼主SZX_YUANYING
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/6 21:56
  • 上次更新2024/12/6 22:04:59
查看原帖
Help
1145403
SZX_YUANYING楼主2024/12/6 21:56

P10110 [GESP202312 七级] 商品交易

20pt求调

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10,M=2e5+10;
int n,m,a,b,v[N],trd[M][2],step[M],check[M];
vector<int> tr[M];
int main(){
	cin>>n>>m>>a>>b;
	a++,b++;
	for(int i=1;i<=n;i++) scanf("%d",&v[i]);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&trd[i][1],&trd[i][2]);
		trd[i][1]++,trd[i][2]++;
		tr[trd[i][1]].push_back(trd[i][2]);
	}
	int sum=0,l=0,r=0,flag=0;
	step[l]=a,check[a]=1;
	while(l<=r){
		for(int i=0;i<tr[step[l]].size();i++){
			if(!check[tr[step[l]][i]]){
				step[++r]=tr[step[l]][i];
				check[tr[step[l]][i]]=1;
				if(tr[step[l]][i]==b){
					flag=1;
					break;
				}
			}
		}
		l++,sum++;
		if(flag==1) break;
	}
	if(flag) cout<<v[b]-v[a]+sum;
	else cout<<"No solution";
	return 0;
}
2024/12/6 21:56
加载中...