Submission #905033

#TimeUsernameProblemLanguageResultExecution timeMemory
905033vjudge1The Xana coup (BOI21_xanadu)C++17
Compilation error
0 ms0 KiB
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back //emplace_back #define pp pop_back #define pii pair<ll, ll> //pair<int, int> #define all(x) (x).begin(),(x).end() #define mp(a,b) make_pair(a , b) #define lb lower_bound #define ub upper_bound #define sz(x) (ll)(x).size() #define F first #define S second #define bg(x) (x).begin() #define For(x, n) for(int (x) = 0 ; (x) < (n) ; (x)++) #define debug(x) cout << #x << " : " << x << endl #define endl '\n' #define arr(x) array<int , (x)> #define yes cout << "impossible\n" #define no cout << "NO\n" #define FAST ios_base::sync_with_stdio(0);cin.tie(0); #define INF 1000000000000000000 ll Sum(ll a , ll b , ll MOD) { a %= MOD; b %= MOD; a += b; return a % MOD; } ll Mul(ll a , ll b , ll MOD) { a %= MOD; b %= MOD; a *= b; return a % MOD; } ll Pow(ll a , ll b , ll MOD) { ll res = 1; while(b) { if((b & 1))res = Mul(res , a , MOD); a = Mul(a , a , MOD); b >>= 1; } return res; } ll Min(ll a , ll b) { if(a > b)return b; return a; } ll Max(ll a , ll b) { if(a > b)return a; return b; } ll Ceil(ll a , ll b) { if(a % b)return (a/b)+1; return a/b; } ///////////////////// //VALS ll n; const ll maxn = 1e5+1e3; vector<ll> adj[maxn]; ll dp[maxn][2][2]; ll a[maxn]; ///////////////////// //FUNCTIONS void dfs(ll i,ll par = -1) { dp[i][0][a[i]] = 0; dp[i][0][a[i] ^ 1] = INF; dp[i][1][a[i] ^ 1] = 1; dp[i][1][a[i]] = INF; for (int j : adj[i]) if (j != par) { dfs(j, i); for (int s = 0; s < 2; s++) { ll dp0 = dp[i][s][0], dp1 = dp[i][s][1]; dp[i][s][0] = min(INF, min(dp0 + dp[j][0][s], dp1 + dp[j][1][s])); dp[i][s][1] = min(INF, min(dp0 + dp[j][1][s], dp1 + dp[j][0][s])); } } } ///////////////////// //SOLVE void solve() { cin >> n; For(i,n-1) { ll u, v; cin >> u >> v; u--; v--; adj[u].pb(v); adj[v].pb(u); } For(i,n)cin >> a[i]; dfs(0,0); if(dp[0][0][0] == dp[0][1][0] and dp[0][1][0] == INF)no; else cout << Min(dp[0][0][0], dp[0][1][0]) << endl; } ///////////////////// //MAIN int main() { FAST; ll t = 1; // cin >> t; while(t--) { solve(); } } ///////////////////// /* ZZZZZZZ A M M IIIIIII N N Z A A M M M M I NN N Z A A M M M M I N N N Z AAAAAAA M M M I N N N Z A A M M I N N N Z A A M M I N NN ZZZZZZZ A A M M IIIIIII N N TREE */

Compilation message (stderr)

xanadu.cpp: In function 'void dfs(long long int, long long int)':
xanadu.cpp:99:75: error: no matching function for call to 'min(long int, const long long int&)'
   99 |           dp[i][s][0] = min(INF, min(dp0 + dp[j][0][s], dp1 + dp[j][1][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
xanadu.cpp:99:75: note:   deduced conflicting types for parameter 'const _Tp' ('long int' and 'long long int')
   99 |           dp[i][s][0] = min(INF, min(dp0 + dp[j][0][s], dp1 + dp[j][1][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
xanadu.cpp:99:75: note:   deduced conflicting types for parameter 'const _Tp' ('long int' and 'long long int')
   99 |           dp[i][s][0] = min(INF, min(dp0 + dp[j][0][s], dp1 + dp[j][1][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
xanadu.cpp:99:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'long int'
   99 |           dp[i][s][0] = min(INF, min(dp0 + dp[j][0][s], dp1 + dp[j][1][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
xanadu.cpp:99:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'long int'
   99 |           dp[i][s][0] = min(INF, min(dp0 + dp[j][0][s], dp1 + dp[j][1][s]));
      |                                                                           ^
xanadu.cpp:100:75: error: no matching function for call to 'min(long int, const long long int&)'
  100 |           dp[i][s][1] = min(INF, min(dp0 + dp[j][1][s], dp1 + dp[j][0][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
xanadu.cpp:100:75: note:   deduced conflicting types for parameter 'const _Tp' ('long int' and 'long long int')
  100 |           dp[i][s][1] = min(INF, min(dp0 + dp[j][1][s], dp1 + dp[j][0][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
xanadu.cpp:100:75: note:   deduced conflicting types for parameter 'const _Tp' ('long int' and 'long long int')
  100 |           dp[i][s][1] = min(INF, min(dp0 + dp[j][1][s], dp1 + dp[j][0][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
xanadu.cpp:100:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'long int'
  100 |           dp[i][s][1] = min(INF, min(dp0 + dp[j][1][s], dp1 + dp[j][0][s]));
      |                                                                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from xanadu.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
xanadu.cpp:100:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'long int'
  100 |           dp[i][s][1] = min(INF, min(dp0 + dp[j][1][s], dp1 + dp[j][0][s]));
      |                                                                           ^
xanadu.cpp: In function 'void solve()':
xanadu.cpp:20:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   20 | #define For(x, n) for(int (x) = 0 ; (x) < (n) ; (x)++)
      |                           ^
xanadu.cpp:112:2: note: in expansion of macro 'For'
  112 |  For(i,n-1)
      |  ^~~
xanadu.cpp:20:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   20 | #define For(x, n) for(int (x) = 0 ; (x) < (n) ; (x)++)
      |                           ^
xanadu.cpp:122:2: note: in expansion of macro 'For'
  122 |  For(i,n)cin >> a[i];
      |  ^~~