Here’s my code: In C++14
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int adj[n+1][n+1];
memset(adj,0,sizeof(adj));
int arrx[n+1],arry[n+1],s[n+1];
queueq;
for(int i=1;i<=n;i++)
{
cin>>arrx[i]>>arry[i]>>s[i];
for(int j=1;j<n;j++)
cin>>adj[i][j];
}
/* for(int i=1;i<=n;i++)
{
cout<<endl;
for(int j=1;j<n;j++)
cout<<adj[i][j]<<" “;
}*/
float ans[n+1];
for(int i=2;i<=n;i++)
ans[i]=1500;
ans[1]=0.000000;
q.push(1);
int v,cnt=0;
while(!q.empty())
{
v=q.front();
q.pop();
for(int j=1;j<n && cnt!=s[v];j++)
{
if(ans[adj[v][j]]>ans[v] && v!=adj[v][j])
{
float f=ans[v]+sqrt(pow(arrx[adj[v][j]]-arrx[v],2)+pow(arry[adj[v][j]]-arry[v],2));
if(f<=ans[adj[v][j]])
{
ans[adj[v][j]]=f;
q.push(adj[v][j]);
// if(adj[v][j]==4)
// cout<<v<<” "<<ans[adj[v][j]]<<endl;
}
cnt++;
}
}
cnt=0;
}
for(int i=1;i<=n;i++)
cout<<fixed<<setprecision(6)<<ans[i]<<endl;
}