void dijkstra(const int start)
{
int pos=start;
bool flag[Max_n]={0};
memset(dist,inf,sizeof(int)*n);
flag[start]=1;
dist[start]=0;
while(1)
{
for(int i=1;i<=n;i++)
if(!flag[i] && dist[pos]+map[pos][i]<dist[i])
dist[i]=map[pos][i]+dist[pos];
int maxn=inf;
for(int i=1;i<=n;i++)
if(!flag[i] && maxn>dist[i])
{maxn=dist[i]; pos=i;}
flag[pos]=1;
if(maxn==inf) return;
}
}