哪位大佬帮忙看看为什么#3#9#10TLE了
#include <bits/stdc++.h>
#define ll long long
#define _debug(x) printf("[DEBUG] %d\n",x);
using namespace std;
const int inf=pow(2,31)-1;
int n , m , s ;
int cnt , fr[200010] , nxt[200010] , to[200010] , w[200010];
bool vis[200010] ;
ll dis[200010] ;
inline int Fr()
{
int x=0 , f=1 ;
char c=getchar();
while( c<'0' || c>'9' )
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while( c>='0' && c<='9' )
{
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
void add(int u , int v , int data)
{
cnt++;
to[cnt]=v;
w[cnt]=data;
nxt[cnt]=fr[u];
fr[u]=cnt;
}
void input()
{
n=Fr();
m=Fr();
s=Fr();
for(int i=0;i<m;i++)
{
int u=Fr() , v=Fr() , w=Fr() ;
add(u,v,w);
}
}
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
void dij()
{
for(int i=0;i<=n;i++)
{
dis[i]=inf;
}
dis[s]=0;
q.push(make_pair(0,s));
while(q.size())
{
int x=q.top().second;
q.pop();
if(vis[x]) continue;
vis[x]=true;
for(int i=fr[x];i;i=nxt[i])
{
if(dis[to[i]]>dis[x]+w[i])
{
dis[to[i]]=dis[x]+w[i];
q.push(make_pair(dis[to[i]],to[i]));
}
}
}
return;
}
void work()
{
dij();
}
void output()
{
for(int i=1;i<=n;i++)
{
printf("%d ",dis[i]);
}
return;
}
int main()
{
input();
work();
output();
return 0;
}