Usually, topological sort is implemented like↵
↵
~~~~~↵
void dfs(int x) {↵
vis[x] = true;↵
for(int u = 0; u < n; u++) {↵
if(!vis[u] && graph[x][u] == 1) {↵
dfs(u);↵
}↵
}↵
order.push_back(x);↵
}↵
~~~~~↵
↵
And then printed in reverse order↵
But if I implement this way↵
↵
~~~~~↵
void dfs(int x) {↵
order.push_back(x);↵
vis[x] = true;↵
for(int u = 0; u < n; u++) {↵
if(!vis[u] && graph[x][u] == 1) {↵
dfs(u);↵
}↵
}↵
}↵
~~~~~↵
↵
And print in same order.↵
↵
Can someone provide me a test case where 2nd approach will fail
↵
~~~~~↵
void dfs(int x) {↵
vis[x] = true;↵
for(int u = 0; u < n; u++) {↵
if(!vis[u] && graph[x][u] == 1) {↵
dfs(u);↵
}↵
}↵
order.push_back(x);↵
}↵
~~~~~↵
↵
And then printed in reverse order↵
But if I implement this way↵
↵
~~~~~↵
void dfs(int x) {↵
order.push_back(x);↵
vis[x] = true;↵
for(int u = 0; u < n; u++) {↵
if(!vis[u] && graph[x][u] == 1) {↵
dfs(u);↵
}↵
}↵
}↵
~~~~~↵
↵
And print in same order.↵
↵
Can someone provide me a test case where 2nd approach will fail