Submission #1245636

#TimeUsernameProblemLanguageResultExecution timeMemory
1245636nguyenhuythach공장들 (JOI14_factories)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> #include<algorithm> #include<random> #include<chrono> #include<cstdlib> #include<ctime> #include<numeric> #include<vector> #include<stack> #include<map> #include<set> #include<queue> #include<iomanip> #define int long long #define ll long long #define L LLONG_MAX #define fi first #define se second #define pii pair<int,int> #define pll pair<long long,long long> #define sz(a) ((int)a.size()) #define FOR(i,j,k) for(int i=j;i<=k;i++) #define REP(i,k,j) for(int i=k;i>=j;i--) #define FORD(i,a) for(auto i:a) #define MASK(i) ((1)<<(i)) #define rngdcl mt19937_64 rng(chrono::steady_clock::now().time_asince_epoch().count()) #define random(l,r) ((l)+(rng()%(r-l+1))) using namespace std; const int nmax=1e5+1; int n,q; vector<pii> adj[nmax]; vector<pii> fac[nmax]; int ans[nmax]; int depth[nmax],treesize[nmax],vst[nmax]; int mn[nmax][2]; void input() { cin >> n >> q; FOR(i,1,n-1) { int u,v,w; cin >> u >> v >> w; u++; v++; adj[u].push_back({v,w}); adj[v].push_back({u,w}); } FOR(i,1,q) { int u,v; cin >> u >> v; FOR(j,1,u) { int x; cin >> x; x++; fac[x].push_back({i,0}); } FOR(j,1,v) { int x; cin >> x; x++; fac[x].push_back({i,1}); } } } void pre_dfs(int u,int v) { treesize[u]=1; FORD(i,adj[u]) { if(i.fi==v || vst[i.fi]) continue; depth[i.fi]=depth[u]+i.se; pre_dfs(i.fi,u); treesize[u]+=treesize[i.fi]; } } int centroid(int u,int v,int n) { FORD(i,adj[u]) { if(i.fi==v || vst[i.fi]) continue; if(treesize[i.fi]>n/2) return centroid(i.fi,u,n); } return u; } void add(int u,int v) { FORD(i,adj[u]) { if(i.fi==v || vst[i.fi]) continue; add(i.fi,u); } FORD(i,fac[u]) mn[i.fi][i.se]=min(mn[i.fi][i.se],depth[u]); } void get(int u,int v) { FORD(i,adj[u]) { if(i.fi==v || vst[i.fi]) continue; get(i.fi,u); } FORD(i,fac[u]) if(mn[i.fi][1-i.se]!=L) ans[i.fi]=min(ans[i.fi],depth[u]+mn[i.fi][1-i.se]); } void reset(int u,int v) { FORD(i,adj[u]) { if(i.fi==v || vst[i.fi]) continue; reset(i.fi,u); } FORD(i,fac[u]) mn[i.fi][i.se]=L; } void dnc(int ct) { depth[ct]=0; pre_dfs(ct,0); vst[ct]=true; FORD(i,adj[ct]) if(!vst[i.fi]) { get(i.fi,ct); add(i.fi,ct); } FORD(i,fac[ct]) if(mn[i.fi][1-i.se]!=L) ans[i.fi]=min(ans[i.fi],mn[i.fi][1-i.se]); FORD(i,adj[ct]) if(!vst[i.fi]) reset(i.fi,ct); FORD(i,adj[ct]) { if(vst[i.fi]) continue; dnc(centroid(i.fi,0,treesize[i.fi])); } } void solve() { FOR(i,1,q) { mn[i][0]=L; mn[i][1]=L; ans[i]=L; } //tim centroid dau tien pre_dfs(1,0); int ct=centroid(1,0,n); dnc(ct); FOR(i,1,q) cout << ans[i] << '\n'; } signed main() { //freopen(".inp", "r", stdin); //freopen(".out", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); solve(); }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccY3bIvd.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cctpA0MZ.o:factories.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccY3bIvd.o: in function `main':
grader.cpp:(.text.startup+0x3d5): undefined reference to `Init(int, int*, int*, int*)'
/usr/bin/ld: grader.cpp:(.text.startup+0x468): undefined reference to `Query(int, int*, int, int*)'
collect2: error: ld returned 1 exit status