rt,用的dijk求最长路
void dijk(int s){
q.push(make_pair(w[s],s));
dis[s]=w[s];
while(!q.empty()){
PII p=q.top();
int u=p.y;
q.pop();
if(visn[u])continue;
visn[u]=1;
for(int i=headn[u];i;i=en[i].nxt){
int v=en[i].to;
if(dis[v]<dis[u]+w[v]){
dis[v]=dis[u]+w[v];
q.push(make_pair(dis[v],v));
}
}
}
}
这份70pts,下一份去掉vis后ac
void dijk(int s){
q.push(make_pair(w[s],s));
dis[s]=w[s];
while(!q.empty()){
PII p=q.top();
int u=p.y;
q.pop();
for(int i=headn[u];i;i=en[i].nxt){
int v=en[i].to;
if(dis[v]<dis[u]+w[v]){
dis[v]=dis[u]+w[v];
q.push(make_pair(dis[v],v));
}
}
}
}