Em vừa chuyển sang học C++ và viết thử một đoạn chương trình thì bị lỗi này mặc dù đã khai báo biến rồi. Mong mọi người giải thích giúp em lý do và cách khắc phục ạ.
Em cám ơn.
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define maxN 50
#define inf 32000
int n,nn,k,p,t[maxN],d[maxN],tt[maxN],u,v,mind;
vector<int> M[maxN];
void bfs(int s){
for(int i=1;i<=n;i++)
d[i]=inf;
queue<int> q; //Khai báo queue q
q.push(s); d[s]=0;
while(!q.empty()){
u=q.front(); //u là phần tử đầu queue
q.pop(); //xóa phần tử đầu queue
for(int i=0;i<M[u].size();i++){
v=M[u][i]; //v là đỉnh kề u
if (d[v]==inf){ //nếu v chưa thăm
q.push(v);
d[v]=d[u]+1;
}
}
}
}
int main ()
{
freopen("robot.inp","r",stdin);
freopen("roboot.out","w",stdout);
scanf("%d %d %d %d",&n,&nn,&k,&p);
for(int i=1;i<=p;i++)
{
scanf("d%",&tt[i]);
}
for(int i=1;i<=nn;i++)
{
scanf("%d %d %d",&u,&v,&k);
if (k=1)
{
M[u].push_back(v);
M[v].push_back(u);
}
}
for (int j=1;j<=p;j++)
{
bfs(tt[j]);
for (int i=1;i<=n;i++)
{
t[i]=0;
T[i]=t[i]+d[i];
}
}
for (int i=1;i<=n;i++)
{
if (d[i]>inf && D[i]<mind)
mind=d[i];
}
printf("%d",mind);
return 0;
}