UVa10926
題敘
http://domen111.github.io/UVa-Easy-Viewer/?10926
想法
直接對於每個依賴遞迴下去,遇到相同的避掉
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include<bits/stdc++.h> #define LL long long #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #define pii pair<int,int> using namespace std; int n,k,l; int v[105][105]; pii ans; bool used[105]; int rec(int px){ int dep=0; for(int i=0 ; i<105 ; i++){ if(v[px][i]==-1){ break; } if(used[v[px][i]]){ continue; } else{ used[v[px][i]]=true; dep += (rec(v[px][i])+1); } } return dep; } int main(){ IOS while(cin>>n && n){ ans = make_pair(0,0); for(int i=0 ; i<105 ; i++){ for(int j=0 ; j<105 ; j++){ v[i][j]=-1; } } for(int i=1 ; i<=n ; i++){ cin>>k; for(int j=0 ; j<k ; j++){ cin>>l; v[i][j]=l; } } for(int i=1,tmp ; i<=n ; i++){ tmp = rec(i); for(int i=0 ; i<105 ; i++){ used[i]=false; } if(tmp > ans.first){ ans = make_pair(tmp,i); } } cout<<ans.second<<"\n"; } return 0; }
|
複雜度
每次遞迴最多T個依賴都遞迴到
- 初始化
$O(N^2)$
- rec
$O(NT)$ 大約等於 $O(N^2)$
整體複雜度: $O(N^2)$