自我感觉良好,但提交后还是错了(只有十分)
“听取wa声一片”
代码:
#include <bits/stdc++.h>
using namespace std;
int n,m,a,b,u,vv;
int v[100005],vis[100005];
struct node
{
int x,s;
};
vector<int> g[100005];
int main()
{
cin>>n>>m>>a>>b;
for(int i=0;i<n;i++)
{
cin>>v[i];
}
for(int i=0;i<m;i++)
{
cin>>u>>vv;
g[u].push_back(vv);
}
queue<node> que;
node p;
p.x=a;
p.s=0;
que.push(p);
while(!que.empty())
{
node q=que.front();
int xx=q.x;
int yy=q.s;
if(xx==b)
{
cout<<yy+v[b]-v[a];
return 0;
}
que.pop();
for(int i=0;i<g[xx].size();i++)
{
if(!vis[i])
{
vis[i]=1;
node pp;
pp.s=yy+1;
pp.x=g[xx][i];
que.push(pp);
}
}
}
cout<<"No solution";
return 0;
}
各位大佬看看哪里有问题吧(拜托拜托)