fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define lli long long int
  4. #define inf 1000000000
  5. #define pb push_back
  6. #define mp make_pair
  7. #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  8. #define endl "\n"
  9. #define yoi cout<<"yo"<<endl;
  10. #define debug(x) cerr << #x << " is " << x << endl;
  11. #define all(x) x.begin(),x.end()
  12. const int mod=1e9+7;
  13. void bfs(vector<vector<int> >&v,int s,int a[]){
  14. queue<int> q;
  15. int dist[v.size()];
  16. memset(dist,0,sizeof(dist));
  17. q.push(s);
  18. dist[s]=a[s];
  19. int i;
  20. while(q.size()){
  21. int x=q.front();
  22. for(i=0;i<v[x].size();i++){
  23. if(!dist[v[x][i]]){
  24. q.push(v[x][i]);
  25. dist[v[x][i]]=max(a[v[x][i]],dist[x]);
  26. }
  27. dist[v[x][i]]=min(dist[v[x][i]],max(a[v[x][i]],dist[x]));
  28. }
  29. q.pop();
  30. }
  31. for(i=1;i<v.size();i++){
  32. cout<<dist[i]<<" ";
  33. }
  34. cout<<endl;
  35. }
  36. int main(){
  37. IOS;
  38. int t;
  39. cin>>t;
  40. while(t--){
  41. int n,m,s,i,x,y;
  42. cin>>n>>m>>s;
  43. int a[n+1];
  44. for(i=1;i<=n;i++){
  45. cin>>a[i];
  46. }
  47. vector<vector<int> > v(n+1);
  48. for(i=0;i<m;i++){
  49. cin>>x>>y;
  50. v[x].pb(y);
  51. }
  52. bfs(v,s,a);
  53. }
  54. }
  55.  
Success #stdin #stdout 0s 4564KB
stdin
2
3 4 1
3 4 5
1 2
1 3
2 3
3 2
4 5 2
6 3 2 5
2 1
2 4
1 3
4 3
3 1
stdout
3 4 5 
6 3 5 5