#include #include using namespace std; int n,m,p,first,last; double a[810][810]; struct stone { int x,y,z; }st[810]; bool visited[810]; double dist[810]; int dad[810],lvl[810]; void dijkstra(int node) { int i; double mindist; for(i=1;i<=p;i++) dist[i]=9000000; dist[node]=0; dad[node]=-1; lvl[node]=1; while(1) { for(i=1;i<=p;i++) if(a[node][i]!=0 && dist[node]+a[node][i]>n>>m>>p; for(i=1;i<=p;i++) { in>>st[i].x>>st[i].y>>st[i].z; for(j=1;j>tx>>ty>>tz; for(i=1;i<=p;i++) if(tx==st[i].x && ty==st[i].y && tz==st[i].z) { first=i; break; } in>>tx>>ty>>tz; for(i=1;i<=p;i++) if(tx==st[i].x && ty==st[i].y && tz==st[i].z) { last=i; break; } dijkstra(last); if(dist[first]==9000000) { out<<"0\n"; return 0; } out<