Untitled

 avatar
unknown
plain_text
a year ago
1.1 kB
5
Indexable
#include <iostream>
#include <queue>
#include <cstring>
  
#define vi vector<int>
#define pb push_back

using namespace std;

int t, n, m, u, v, x, y;
vi a[1001];
int visit[1001];
int cha[1001];
vi ans;

void bfs(int d){
  memset(visit, 0, sizeof(visit));
  memset(cha, 0, sizeof(visit));
  queue<int> q;
  q.push(d);
  visit[d] = 1;
  while(!q.empty()){
    int b = q.front(); q.pop();
    for(int ke : a[b]){
      if(!visit[ke]){
        q.push(ke);
        visit[ke] = 1;
        cha[ke] = b;
      }
    }
  }
}
void solve(int d, int c){
  bfs(d);
  if(!visit[c]) cout << "k co duong\n";
  else{
    while(c != d){
      ans.pb(c);
      c = cha[c];
    }
    ans.pb(d);
    for(int i = ans.size()-1; i >= 0; i--)
      cout << ans[i] << " ";
     cout << endl;
    ans.clear();
  }
}
int main(){
  freopen("dothi.inp","r",stdin);
  freopen("dothi.out","w",stdout);
  cin >> t;
  while(t--){
    cin >> n >> m >> u >> v;
    for(int i = 0; i < m; i++){
      cin >> x >> y;
      a[x].pb(y);
    }
    solve(u, v);
    for(int i = 1; i <= n; i++)
      a[i].clear();
  }
  
  return 0;
}
Editor is loading...
Leave a Comment