Submission #112526

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
1125262019-05-20 12:09:22nxteruRace (IOI11_race)C++14
100 / 100
588 ms85672 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
#define F first
#define S second
#define PB push_back
#define INF 1000000000
int n,k,vs[200005],w[200005],la[200005],ans=INF;
vector<P>g[200005];
map<int,int>m[200005];
void merge(int x,int y){
if(m[vs[x]].size()<m[vs[y]].size())swap(x,y);
int vx=vs[x],vy=vs[y];
for(map<int,int>::iterator i=m[vy].begin();i!=m[vy].end();i++){
if(m[vx].find(k-w[vx]-w[vy]-i->F)!=m[vx].end())ans=min(ans,m[vx][k-w[vx]-w[vy]-i->F]+i->S+la[vx]+la[vy]);
}
for(map<int,int>::iterator i=m[vy].begin();i!=m[vy].end();i++){
int c=i->F-w[vx]+w[vy];
if(m[vx].find(c)!=m[vx].end())m[vx][c]=min(m[vx][c],i->S-la[vx]+la[vy]);
else m[vx][c]=i->S-la[vx]+la[vy];
}
vs[y]=vx;
}
void dfs(int v,int p){
for(int i=0;i<g[v].size();i++){
int u=g[v][i].F,l=g[v][i].S;
if(u==p)continue;
dfs(u,v);
w[vs[u]]+=l;
la[vs[u]]++;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

race.cpp: In function 'void dfs(int, int)':
race.cpp:25:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<g[v].size();i++){
              ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...