Submission #370790

#TimeUsernameProblemLanguageResultExecution timeMemory
370790alirezasamimi100Factories (JOI14_factories)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> /*#pragma comment(linker, "/stack:200000000") #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")*/ #pragma GCC optimize("O2") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx,avx2,sse,sse2,fma") using namespace std; using ll = long long int; #define F first #define S second #define pb push_back #define lc v<<1 #define rc v<<1|1 #define fast_io ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); const int N=5e5+10,LN=20,M=2e2+10,SQ=250,inf=1e9; const ll INF=1e18; const int MOD=1000000007 /*998244353*/; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using pll=pair<ll,ll>; using pii=pair<int,int>; #define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> ll pow(ll x, ll y, ll mod){ ll ans=1; while (y != 0) { if (y & 1) ans = ans * x % mod; y >>= 1; x = x * x % mod; } return ans; } ll n,h[N],H[N],p[LN][N],st[N],t,q,mp[N],di[N]; vector<pll> adj[N]; vector<ll> z; stack<ll> s; priority_queue<pll> pq; void dfs(ll v, ll P=0){ p[0][v]=P; st[v]=++t; for(auto [u,w] : adj[v]){ if(u!=P) H[u]=H[v]+1,h[u]=h[v]+w,dfs(u,v); } } bool cmp(ll a, ll b){ return st[a]<st[b]; } ll LCA(ll v, ll u){ if(H[u]<H[v]) swap(v,u); for(ll i=LN; i--;){ if(H[p[i][u]]>=H[v]) u=p[i][u]; } if(v==u) return v; for(ll i=LN; i--;){ if(p[i][u]!=p[i][v]) u=p[i][u],v=p[i][v]; } return p[0][v]; } ll dist(ll v, ll u){ ll z=LCA(v,u); return h[v]+h[u]-2*h[z]; } int main(){ fast_io; cin >> n >> q; memset(di,63,sizeof di); memset(mp,-1,sizeof mp); for(ll i=1; i<n; i++){ ll v,u,w; cin >> v >> u >> w; v++; u++; adj[v].pb({u,w}); adj[u].pb({v,w}); } dfs(H[1]=1); for(ll i=1; i<LN; i++) for(ll j=1; j<=n; j++) p[i][j]=p[i-1][p[i-1][j]]; while(q--){ ll x,y,ans; cin >> x >> y; z.clear(); while(!pq.empty()) pq.pop(); while(!s.empty()) s.pop(); for(ll i=0; i<x; i++){ ll P; cin >> P; P++; z.pb(P); mp[P]=0; } for(ll i=x; i<x+y; i++){ ll P; cin >> P; P++; z.pb(P); mp[P]=1; } sort(z.begin(),z.end(),cmp); for(ll i=0; i<x+y-1; i++) z.pb(LCA(z[i],z[i+1])); z.pb(LCA(z[0],z[x+y-1])); sort(z.begin(),z.end(),cmp); z.resize(unique(z.begin(),z.end())-z.begin()); s.push(z[0]); if(!mp[z[0]]) di[z[0]]=0,pq.push({0,z[0]}); adj[z[0]].clear(); for(ll i=1; i<z.size(); i++){ adj[z[i]].clear(); while(LCA(z[i],s.top())!=s.top()) s.pop(); ll d=dist(s.top(),z[i]); adj[s.top()].pb({z[i],d}); adj[z[i]].pb({s.top(),d}); s.push(z[i]); if(!mp[z[i]]) di[z[i]]=0,pq.push({0,z[i]}); } while(!pq.empty()){ auto [d,v]=pq.top(); pq.pop(); d=-d; if(d!=di[v]) continue; if(mp[v]==1){ ans=d; break; } for(auto [u,w] : adj[v]){ if(d+w<di[u]) di[u]=d+w,pq.push({-di[u],u}); } } for(ll i : z){ mp[i]=-1; di[i]=di[0]; } cout << ans << '\n'; } return 0; }

Compilation message (stderr)

factories.cpp: In function 'int main()':
factories.cpp:109:22: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  109 |         for(ll i=1; i<z.size(); i++){
      |                     ~^~~~~~~~~
/tmp/ccwq9JSl.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccKstJPU.o:factories.cpp:(.text.startup+0x0): first defined here
/tmp/ccwq9JSl.o: In function `main':
grader.cpp:(.text.startup+0x37b): undefined reference to `Init(int, int*, int*, int*)'
grader.cpp:(.text.startup+0x412): undefined reference to `Query(int, int*, int, int*)'
collect2: error: ld returned 1 exit status