打了个SPFA,这代码在比赛能用吗
#include<bits/stdc++.h>
#define uf(x,y,z) for(int x=y;x<=z;x++)
#define df(x,y,z) for(int x=y;x>=z;x--)
#define int long long
using namespace std;
int n,m,x,y,z,dis[100010];
queue<int>q;
struct node
{
int l;
map<int,int>y;
map<int,int>t;
}a[100010];
signed main()
{
cin>>n>>m;
uf(i,1,m)
{
scanf("%lld%lld%lld",&x,&y,&z);
a[x].l++;
a[x].y[a[x].l]=y;
a[x].t[a[x].l]=z;
a[y].l++;
a[y].y[a[y].l]=x;
a[y].t[a[y].l]=z;
}
memset(dis,0x3f3f3f3f3f3f3f3f,sizeof(dis));
dis[1]=0;
q.push(1);
while(!q.empty())
{
int u=q.front();
q.pop();
uf(i,1,a[u].l)
{
int v=a[u].y[i];
if(dis[v]>dis[u]+a[u].t[i])
{
dis[v]=dis[u]+a[u].t[i];
q.push(v);
}
}
}
uf(i,1,n)cout<<dis[i]<<endl;
return 0;
}