- #include<stdio.h>
- #include<math.h>
- int cx[800], cy[800], clinked[800];
- int road[800][800], roadn[800];
- int erect[800], en, check, mind;
- double m[800][800];
- void visit(int n){
- int i;
- for(i=0; i<roadn[n]; i++){
- if(clinked[road[n][i]] == 0){
- erect[en++] = road[n][i];
- clinked[road[n][i]] = 1;
- if(roadn[road[n][i]] != 0)visit(road[n][i]);
- }
- }
- roadn[n] = 0;
- }
- int main(){
- int n;
- int N, M, i, j, r1, r2, ch, link;
- double min;
- while(n--){
- for(i=1; i<=N; i++){
- }
- for(i=1; i<=N; i++){
- for(j=1; j<=N; j++){
- }
- }
- for(i=0; i<M; i++){
- m[r1][r2] = m[r2][r1] = -1;
- road[r1][roadn[r1]++] = r2;
- road[r2][roadn[r2]++] = r1;
- }
- erect[0] = en = 1;
- clinked[1] = 1;
- ch = 1;
- while(en < N){
- min = 99999999;
- check = 1;
- for(i=0; i<en; i++){
- if(roadn[erect[i]] != 0){
- visit(erect[i]);
- check = 0;
- break;
- }else{
- for(j=1; j<=N; j++){
- if(clinked[j] == 0){
- if(m[erect[i]][j] < min){
- min = m[erect[i]][j];
- mind = j;
- link = erect[i];
- }
- }
- }
- }
- if(check == 0)break;
- }
- if(check == 1){
- erect[en++] = mind;
- clinked[mind] = 1;
- ch = 0;
- }
- }
- if(ch == 1){
- }
- }
- return 0;
- }
Raw Paste