这段代码为什么会编译错误?
#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,l[1010],dis[1010];
queue<int>q;
struct node1
{
int x,t;
}nod1;
struct node2
{
int y,t;
}nod2;
map<node1,node2>a;
void no(int x,int t)
{
nod1.x=x;
nod1.t=t;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
scanf("%lld%lld%lld",&x,&y,&z);
l[x]++;
no(x,l[x]);a[nod1].t=z;
no(y,++l[y]);a[nod1].t=z;
}
memset(dis,0x3f3f3f3f3f3f3f3f,sizeof(dis));
dis[1]=0;
q.push(1);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=1;i<=l[u];i++)
{
no(u,i);
int v=a[nod1].y;
if(dis[v]>dis[u]+a[nod1].t)
{
dis[v]=dis[u]+a[nod1].t;
q.push(v);
}
}
}
for(int i=1;i<=n;i++)cout<<dis[i]<<endl;
return 0;
}