看板 THUIM-4th 關於我們 聯絡資訊
#include<stdio.h> #include<stdlib.h> int N,E; int found[50]; long int A[50][50]; int part1[50],part2[50][50]; void shortestpath(); void allcosts(); void main() { FILE *fptr; int i,j; long int weight; fptr = fopen("1111.txt","r"); if (fptr == NULL) exit(1); fscanf(fptr, "%d" , &N); fscanf(fptr, "%d" , &E); for (i=0;i<N;i++) { for (j=0;j<N;j++) { if (i==j) {A[i][j]=0;} else {A[i][j]=1000;} } } while (fscanf(fptr,"%d %d %ld",&i,&j,&weight) != EOF) A[i][j] = weight; fclose(fptr); printf("part1:"); shortestpath(); printf("\npart2: \n"); allcosts(); } void shortestpath() { int found[100]; int i,j,small,u; for(i=0;i<N;i++) { found[i] = 0; part1[i] = A[0][i]; } found[0] = 1; for (i=0;i<N-2;i++) { u=1000; for (j=0 ; j<N ; j++) { if (found[j] == 0) { if (u > part1[j]) { small = j; u = part1[j]; } } } found[small] = 1; for (j=0;j<N;j++) if (found[j] == 0) if (part1[small] + A[small][j] < part1[j]) part1[j] = part1[small] + A[small][j]; } for (i=0;i<N;i++) { if (i<N-1) {printf("%2d,",part1[i]);} else {printf("%2d",part1[i]);} } } void allcosts() { int i,j,k; for (i=0;i<N;i++) for (j=0;j<N;j++) part2[i][j] = A[i][j]; for (k=0;k<N;k++) for (i=0;i<N;i++) for (j=0;j<N;j++) if (part2[i][k] + part2[k][j] < part2[i][j]) part2[i][j] = part2[i][k] + part2[k][j]; for (i=0;i<N;i++) { for (j=0;j<N;j++) { if (part2[i][j]>=1000) {printf(" -");} else {printf("%4d",part2[i][j]);} } printf("\n"); } } } ======================================================================= 還沒去驗的人快去唷~~~ 我也不知道還能不能驗 反正第二次作業也要驗了 第一次沒驗的就一起去驗八 有驗總比沒驗好!! -- 『Together』就是 To + get + her 由此可知當初造字的人 是在告訴我們----- 想在『一起』就要 ㄧ○︿ 去 把 她 \ √ ﹀... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.89.114