Submission #640119

#TimeUsernameProblemLanguageResultExecution timeMemory
640119dantBosses (BOI16_bosses)C++14
100 / 100
652 ms3544 KiB
#include <bits/stdc++.h> #define FOR(i,a,b) for (int i = (a); i < (b); i++) #define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i) #define FORE(i, a) for(auto i : a) #define FORC(cont, it) for(typeof((cont).begin()) it = (cont).begin(); it != (cont).end(); it++) #define ull unsigned long long #define ll long long #define ld long double #define clr(v, d) memset(v, d, sizeof(v)) #define vt vector #define pb push_back #define sz(v) ((int)(v).size()) #define all(v) (v).begin(),(v).end() #define erase_duplicates(x) x.erase(unique(all(x)),x.end()); #define fi first #define se second #define deb(x) cout << #x << ": "<< x << '\n'; using namespace std; using pi = pair<int,int>; using pl = pair<ll,ll>; using pd = pair<double,double>; using vi = vt<int>; using vb = vt<bool>; using vl = vt<ll>; using vd = vt<double>; using vs = vt<string>; using vpi = vt<pi>; using vpl = vt<pl>; using vpd = vt<pd>; #define lb lower_bound #define ub upper_bound template<class T> int lwb(vt<T>& a, const T& b) { return int(lb(all(a),b)-begin(a)); } template<class T> int upb(vt<T>& a, const T& b) { return int(ub(all(a),b)-begin(a)); } template <typename T> std::istream& operator>>(std::istream& input, std::vector<T>& data){ for(T& x : data)input >> x;return input;} template <typename T> std::ostream& operator<<(std::ostream& stream, const vector<T>& vec){ for(size_t i = 0; i < vec.size(); i++){stream << vec[i];if(i != vec.size() - 1)stream << ' ';}; return stream; } template<class T> bool umin(T& a, const T& b) { return b < a ? a = b, 1 : 0; } template<class T> bool umax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } const int dx[8] = {-1,-1,-1, 0,0, 1,1,1}; const int dy[8] = {-1, 0, 1,-1,1,-1,0,1}; const int d4x[4] = {-1, 0, 0,1}; const int d4y[4] = {0, 1,-1, 0}; const double PI = acos(-1.0); const int INF = 1e9; const int INFNEG = INT_MIN; const ll int MOD = 1e9+7; const double EP = 1E-10; bool myCompare(pair<ll,ll> p1, pair<ll,ll> p2){ return p1.se < p2.se || p1.se == p2.se && p1.fi < p2.fi ; } const int mxN = 130000 + 10; vi adj[mxN]; ll n; ll bfs(int start){ queue<pl> q; vb vis(mxN,0); q.push({start,1}); vis[start] = 1; ll cnt = 0; ll tot = 0; while(!q.empty()){ auto now = q.front(); q.pop(); cnt++; ll node = now.fi; tot += now.se; for(auto &neigh: adj[node]){ if(!vis[neigh]){ vis[neigh] = 1; q.push({neigh,now.se+1}); } } } return (cnt != n ? 1e18 : tot); } void solve() { cin >> n; FOR(v,0,n){ ll m; cin >> m; while(m--){ ll u; cin >> u; u--; adj[u].pb(v); } } ll ans = 1e18; FOR(i,0,n){ ll curr = bfs(i); umin(ans,curr); } cout<<ans<<'\n'; // string s,t; cin >> s >> t; // n = sz(s), m = sz(t); // vi dp(n+1); // vi dpPrev(n+1); // FOR(i,1,n+1){ // FOR(j,1,m+1){ // if(s[i-1] == t[j-1]){ // dp[j] = dpPrev[j-1] + 1; // ans.pb({i-1,j-1}); // cout<<i-1<<" "<<j-1<<'\n'; // } // else{ // dp[j] = max(dp[j-1],dpPrev[j]); // } // } // swap(dp,dpPrev); // } // cout<<dpPrev[n]<<'\n'; // // reverse(all(ans)); // FOR(j,2,sz(ans)){ // auto i = ans[j]; // cout<<i.fi<<" "<<i.se<<'\n'; // } } int main(){ ios::sync_with_stdio(0); cin.tie(0); // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); int t = 1, i = 0; // cin >> t; while (t--){ // cout<<"Case "<<++i<<": "; solve(); } } /* */ // se vuelve más fácil // cada día es un poco más fácil, pero tienes que hacerlo cada día // esa es la parte difícil, pero se vuelve más fácil

Compilation message (stderr)

bosses.cpp: In function 'bool myCompare(std::pair<long long int, long long int>, std::pair<long long int, long long int>)':
bosses.cpp:56:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   56 |     return p1.se < p2.se || p1.se == p2.se && p1.fi < p2.fi ;
      |                                            ^
bosses.cpp: In function 'int main()':
bosses.cpp:137:16: warning: unused variable 'i' [-Wunused-variable]
  137 |     int t = 1, i = 0;
      |                ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...