Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions Basic_Of_Algorithm/src/Today_22_06_03/deliveryAgain.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package Today_22_06_03;

public class deliveryAgain {

public static void main(String[] args) {


int n = 3;

int [][]road = {{1,2,1},{1,3,5},{2,3,1}};

int k = 2;

int answer = 0;

int [][] map = new int[n+1][n+1];

int INF = 500001;

for(int i=1;i<map.length;i++) {
for(int j = 1 ; j < map[0].length;j++) {
if(i==j)continue;
map[i][j] = INF;
}
}

for(int i = 0 ; i < road.length;i++) {
int a = road[i][0];
int b = road[i][1];
int value = road[i][2];

if(map[a][b] > value) {
map[a][b] = value;
map[b][a] = value;
}
}


int[]dist = new int[n+1];

for(int i=2 ; i<dist.length;i++) {
dist[i] = INF;
}

boolean[] visited= new boolean[n+1];

visited[1] = true;


for(int i = 1 ; i < n ; i ++) {



int min_value = INF;
int min_idx = 1;

for(int j=2;j<=n;j++) {
if(!visited[j] && dist[j] < min_value) {
min_value = dist[j];
min_idx = j;
}
}

visited[min_idx] = true;


for(int j=2;j<=n;j++) {
if(dist[j] > dist[min_idx] + map[min_idx][j]) {
dist[j] = dist[min_idx] + map[min_idx][j];
}
}

}

for(int i = 1 ; i <dist.length;i++) {
if(dist[i]<=k)answer++;
}


System.out.println(answer);

for(int i : dist)System.out.print(i+",");
}
}
80 changes: 80 additions & 0 deletions Basic_Of_Algorithm/src/Today_22_06_03/dijikstra.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package Today_22_06_03;

class graph{

private int n ;
private int maps[][];

public graph(int n) {
this.n = n;
maps = new int[n+1][n+1];
}
public void input(int i,int j,int w) {
maps[i][j] = w;
maps[j][i] = w;
}
public void dijikstra(int v) {
int distance[] = new int[n+1];
boolean[]check = new boolean[n+1];

for(int i = 1; i < n+1; i++) {
distance[i] = Integer.MAX_VALUE;
}
distance[v] = 0;
check[v] = true;

for(int i = 1; i < n+1;i++) {
if(!check[i] && maps[v][i] != 0) {
distance[i] = maps[v][i];
}
}

for(int a = 0 ; a < n-1; a++) {
int min = Integer.MAX_VALUE;
int min_idx = 1;

for(int i=1;i<n+1;i++) {
if(!check[i] && distance[i]!=Integer.MAX_VALUE) {
if(distance[i] < min) {
min = distance[i];
min_idx = i;
}
}
}
check[min_idx] = true;
for(int i = 1; i < n+1; i++) {
if(!check[i] && maps[min_idx][i]!=0) {
distance[i] = distance[min_idx]+maps[min_idx][i];
}
}
}
for(int i =1 ;i<n+1;i++) {
System.out.print(distance[i]+" ");
}
System.out.println((" "));
}

}

public class dijikstra {

public static void main(String[] args) {

graph g = new graph(8);

g.input(1, 2, 3);
g.input(1, 5, 4);
g.input(1, 4, 4);
g.input(2, 3, 2);
g.input(3, 4, 1);
g.input(4, 5, 2);
g.input(5, 6, 4);
g.input(4, 7, 6);
g.input(7, 6, 3);
g.input(3, 8, 3);
g.input(6, 8, 2);
g.dijikstra(1);


}
}