#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10,M=2e5+10;
int n,m,q,idx,h[N],w[M],e[M],ne[M],dis[N];
bool book[N];
typedef pair<int,int> PII;
priority_queue<PII,vector<PII>,greater<PII> > que;
void addEdge(int x,int y,int z){
e[idx]=y;
w[idx]=z;
ne[idx]=h[x];
h[x]=idx;
idx++;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
memset(dis,0x3f,sizeof dis);
memset(h,-1,sizeof h);
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
addEdge(x,y,z);
addEdge(y,x,z);
}
for(int i=h[1];~i;i=ne[i]) dis[e[i]]=min(dis[e[i]],w[i]);
dis[1]=0;
que.push({0,1});
while(!que.empty()){
int u=que.top().second;
que.pop();
if(book[u]) continue;
book[u]=1;
for(int v=h[u];~v;v=ne[v]){
dis[e[v]]=min(dis[u]+w[v],dis[e[v]]);
que.push({dis[e[v]],e[v]});
}
}
for(int i=1;i<=q;i++){
int sx,sy;
cin>>sx>>sy;
cout<<dis[sx]+dis[sy]<<endl;
}
return 0;
}
https://www.luogu.com.cn/record/138105798 这份代码提交是AC的。
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10,M=2e5+10;
int n,m,q,idx,h[N],w[M],e[M],ne[M],dis[N];
bool book[N];
typedef pair<int,int> PII;
priority_queue<PII,vector<PII>,greater<PII> > que;
void addEdge(int x,int y,int z){
e[idx]=y;
w[idx]=z;
ne[idx]=h[x];
h[x]=idx;
idx++;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
memset(dis,0x3f,sizeof dis);
memset(h,-1,sizeof h);
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
addEdge(x,y,z);
addEdge(y,x,z);
}
for(int i=h[1];~i;i=ne[i]) dis[e[i]]=min(dis[e[i]],w[i]);
dis[1]=0;
que.push({0,1});
while(!que.empty()){
int u=que.top().second;
que.pop();
if(book[u]) continue;
book[u]=1;
for(int v=h[u];~v;v=ne[v]){
if(!book[e[v]]&&dis[e[v]]>dis[u]+w[v]){
dis[e[v]]=dis[u]+w[v];
que.push({dis[e[v]],e[v]});
}
}
}
for(int i=1;i<=q;i++){
int sx,sy;
cin>>sx>>sy;
cout<<dis[sx]+dis[sy]<<endl;
}
return 0;
}
https://www.luogu.com.cn/record/138079880 这份代码提交0分。
请问为什么。