求助!!!90ptsWA第九个点

P2017 [USACO09DEC] Dizzy Cows G

啊,拓扑排序的逆序应当是dfs序的正序啊 ```cpp void dfs(int u){ for(int i = 0;i < vct[u].size();i++){ int v = vct[u][i]; if(!vis[v])dfs(v); } p[u] = ++cnt; vis[u] = 1; return ; } ```
by 帝都_henry26268 @ 2023-11-09 21:26:08


Orz
by CNCAGN @ 2023-11-09 22:59:38


@[帝都_henry26268](/user/315655) 我是反向存的边QAQ
by vegetable_doggy @ 2023-11-10 13:11:44


@[CNCAGN](/user/65161) orz
by vegetable_doggy @ 2023-11-10 15:38:37


不好说是哪里错了,要不你再检查一下你代码的逻辑,我不太确定反向建边可不可行 我的代码如下 ```cpp #include<iostream> #include<vector> #define ll long long using namespace std; const int MAXN = 1e5+10; const int MAXM = 2e5+10; int n,m1,m2;//m1有向,m2无向 vector<int> vct[MAXN]; int vis[MAXN]; int p[MAXN]; int cnt = 0; void dfs(int u){ for(int i = 0;i < vct[u].size();i++){ int v = vct[u][i]; if(!vis[v])dfs(v); } p[u] = ++cnt; vis[u] = 1; return ; } int main(){ cin >> n >> m1 >> m2; for(int i = 1;i <= m1;i++){ int u,v;cin >> u >> v; vct[u].push_back(v); } for(int i = 1;i <= n;i++){ if(!vis[i]) dfs(i); } for(int i = 1;i <= m2;i++){ int u,v;cin >> u >> v; if(p[u] > p[v])cout << u << " " << v << endl; else cout << v << " " << u << endl; } return 0; } ```
by 帝都_henry26268 @ 2023-11-10 15:44:55


@[vegetable_doggy](/user/755293)
by 帝都_henry26268 @ 2023-11-10 15:45:21


@[帝都_henry26268](/user/315655) A了,可能思路就错了 改拓扑排序过了 ,感谢感谢
by vegetable_doggy @ 2023-11-10 15:51:04


|