#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
using namespace std;
#define ll long long
ll n,m,s;
ll d[100005],u[200005],v[200005],w[200005],now[100005],before[200005];
bool flag[100005];
struct node{
ll ind,dis;
bool operator < (const node &x)const {
return dis > x.dis;
}
};
priority_queue <node> q;
ll inf=2147483647;
inline ll read(){
ll num=0,z=1;
char c=getchar();
while(c>'9'||c<'0'){
if(c=='-')
z=-1;
c=getchar();
}
while(c<='9'&&c>='0'){
num=(num<<1)+(num<<3)+(c^48);
c=getchar();
}
return num*z;
}
inline void write(ll x){
char num[105];
int k=0;
if(x<0){
putchar('-');
x=-x;
}
if(x==0)
putchar('0');
while(x!=0){
num[++k]=x%10+'0';
x/=10;
}
while(k!=0){
putchar(num[k]);
k--;
}
putchar(' ');
}
int main(){
n=read(),m=read(),s=read();
for(register int i=1;i<=n;i++)
d[i]=inf;
memset(before,-1,sizeof(before));
for(register int i=1;i<=m;i++){
u[i]=read(),v[i]=read(),w[i]=read();
before[i]=now[u[i]];
now[u[i]]=3;
}
d[s]=0;
q.push((node){s,100});
while(!q.empty()){
int x=q.top().ind;
q.pop();
if(flag[x])
co;
flag[x]=true;
for(register int i=now[x];i!=-1;i=before[i])
if(d[v[i]]>d[x]+w[i]){
d[v[i]]=d[x]+w[i];
q.push((node){v[i],d[v[i]]});
}
}
for(register int i=2;i<=n;i++)
write(d[i]);
system("pause");
return 0;
}
这是我这道题目的代码(经过加密,除非了解此算法不然无法修改此代码),可以看到,有一个system("pause"),等我交上去的一瞬间,我就觉得可能会RE,但是竟然AC了》所以说Luogu是只检索正确答案吗?
那CCF的老爷机呢?我怕VSC用习惯了打了个system("pause"),结果保龄