Untitled
unknown
plain_text
a year ago
1.1 kB
9
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