제출 #243687

#제출 시각아이디문제언어결과실행 시간메모리
243687kimbj0709Bosses (BOI16_bosses)C++14
100 / 100
1381 ms1784 KiB
#pragma optimizaiton("O3"); #include <bits/stdc++.h> using namespace std; #define maxn 5050 vector<vector<int> > adj(maxn); int32_t main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int no_of_input,no_of_input1,input; cin >> no_of_input; for(int i=1;i<=no_of_input;i++){ cin >> no_of_input1; for(int j=0;j<no_of_input1;j++){ cin >> input; //adj[i].push_back(input); adj[input].push_back(i); } } int ans = INT_MAX; deque<pair<int,int> > q1; vector<int> dist(maxn,INT_MAX); vector<int> parent(maxn,0); vector<int> dist2(maxn,0); vector<vector<int> > pos(maxn); for(int i=1;i<=no_of_input;i++){//tree rooted at node i for(int j=0;j<=no_of_input;j++){ dist[j] = INT_MAX; parent[j] = 0; dist2[j] = 1; pos[j].clear(); } q1.push_back({i,0}); dist[i] = 0; while(q1.size()!=0){ pair<int,int> a = q1.front(); q1.pop_front(); for(auto k:adj[a.first]){ if(a.second+1<dist[k]){ dist[k] = a.second+1; parent[k] = a.first; q1.push_back({k,dist[k]}); } } } int sum = 0; for(int j=1;j<=no_of_input;j++){ if(j!=i&&parent[j]==0){ goto cont; } pos[dist[j]].push_back(j); } for(int j=no_of_input;j>=0;j--){ for(auto k:pos[j]){ dist2[parent[k]] += dist2[k]; } } for(int j=1;j<=no_of_input;j++){ if(i!=j&&parent[j]==0){ sum = 1000000000; } //cout << dist2[j] << " "; sum += dist2[j]; } //cout << endl; //cout << sum << "--\n"; ans = min(ans,sum); cont : ; } cout << ans; }

컴파일 시 표준 에러 (stderr) 메시지

bosses.cpp:1:0: warning: ignoring #pragma optimizaiton  [-Wunknown-pragmas]
 #pragma optimizaiton("O3");
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...