Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- double dalecina(int x1, int y1, int x2, int y2)
- {
- return sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );
- }
- int main()
- {
- int n;
- cin>>n;
- int koordinati[n][2];
- for(int j=0;j<n;j++)
- cin>>koordinati[j][0]>>koordinati[j][1];
- double matrica[n][n];
- for(int j=0;j<n;j++)
- for(int k=0;k<n;k++)
- {
- matrica[j][k]=matrica[k][j]=dalecina(koordinati[j][0],koordinati[j][1],koordinati[k][0],koordinati[k][1]);
- if(matrica[j][k]>10)
- {
- matrica[j][k]=matrica[k][j]=-1;
- }
- }
- double dist[n];
- bool visited[n];
- for(int j=0;j<n;j++)
- {
- dist[j]=99999999;
- visited[j]=false;
- }
- dist[0]=0;
- visited[0]=true;
- for(int j=0;j<n;j++)
- {
- if(matrica[0][j]!=-1)
- dist[j]=matrica[0][j];
- }
- while(!visited[n-1])
- {
- int najbliskoTeme;
- double najkratokPat=999999;
- for(int j=0;j<n;j++)
- if(!visited[j] && dist[j]<najkratokPat)
- {
- najbliskoTeme=j;
- najkratokPat=dist[j];
- }
- visited[najbliskoTeme]=true;
- for(int j=0;j<n;j++)
- if(matrica[najbliskoTeme][j]!=-1 && matrica[najbliskoTeme][j]+dist[najbliskoTeme]<dist[j])
- dist[j]=matrica[najbliskoTeme][j]+dist[najbliskoTeme];
- }
- cout<<dist[n-1];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement