qwq,dfs+反向存图,#1 AC , 其他全 MLE

P2853 [USACO06DEC] Cow Picnic S

@[A_chicken_boy](/user/774204) 因为你 dfs 在访问到已经访问过的点是没有退出。 加个限制就过了 ```cpp #include <bits/stdc++.h> using namespace std ; #define leng 10001 #define N 1001 int k , n , m ; int head[leng] , ver[leng] , mnext[leng] , tot ; bool havecow[N] ; bool canvis[N] ; int ans ; void add ( int , int ) ; void dfs ( int ) ; int main ( ){ cin >> k >> n >> m ; for ( int i = 1 ; i <= k ; ++i ) { int j ; cin >> j ; havecow[j] = true ; } for ( int i = 1 ; i <= m ; ++i ){ int x , y ; cin >> x >> y ; add ( y , x ) ; } int f ; for ( int i = 1 ; i <= n ; ++i ){ // cout << "i=" << i << " : " ; f=0; memset( canvis , false , sizeof ( canvis ) ) ; dfs ( i ) ; canvis[i] = true ; for ( int j = 1 ; j <= n ; ++j ){ // cout << canvis[j] << " " ; if ( havecow[j] ){ if ( canvis[j] == false ){ f = 1 ; break ; } } } // cout << endl ; if ( !f ) ans++; } cout << ans ; return 0 ; } void add ( int x , int y ){ mnext[++tot] = head[x] ; head[x] = tot ; ver[tot] = y ; } void dfs ( int x ){ int i ; for ( i = head[x] ; i ; i = mnext[i] ){ int y = ver[i] ; if(canvis[y])continue;//这里 canvis[y] = true ; dfs ( y ) ; } } ```
by AgrumeStly @ 2023-09-02 17:35:00


谢谢大佬
by A_chicken_boy @ 2023-09-02 20:35:23


|