Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

哈哈,就是最小生成树啊。 贴贴源程序了。

Posted by lihao102 at 2008-08-28 15:02:54 on Problem 1751
#include<stdio.h>
#include<math.h>

#define MAX 800
#define MAX_VALUE 100000000

struct _node
{
	int x;
	int y;
};

struct _aaa
{
	int s;
	int e;
};

struct _bbb
{
	int pre;
	float we;
};

typedef struct _aaa aaa;
typedef struct _bbb bbb;
typedef struct _node node;

bbb flag[MAX];
node town[MAX];
float map[MAX][MAX];
aaa result[MAX];

int town_count = 0;
int exist = 0;
int start = 0;

int main(void)
{
	int i = 0;
	int j = 0;
	
	scanf("%d",&town_count);

	for(i = 0; i < town_count; ++i)
	{
		scanf("%d %d",&town[i].x,&town[i].y);
	}

	for(i = 0; i < town_count; ++i)
	{
		for(j = 0; j < town_count; ++j)
		{
			if( i == j )
			{
				map[i][j] = 0;
				continue;
			}

			map[i][j] = (float)sqrt( ( town[i].x - town[j].x ) * ( town[i].x - town[j].x ) +  ( town[i].y - town[j].y ) * ( town[i].y - town[j].y ) );
		}
	}

	scanf("%d",&exist);

	for(i = 0; i < exist; ++i)
	{
		int x = 0;
		int y = 0;
		scanf("%d %d",&x,&y);
		map[x-1][y-1] = 0.01f;
		map[y-1][x-1] = 0.01f;
		start = x - 1;
	}


	for(i = 0; i < town_count; ++i)
	{
		flag[i].pre = start;
		flag[i].we = map[i][start];
	}

	flag[start].we = 0;
	
	float min = 0;
	int k = -1;
	int len = 0;

	for(i = 0; i < town_count - 1; ++i)
	{
		min = MAX_VALUE;
		for(j = 0; j < town_count; ++j)
		{
			if( flag[j].we != 0 && flag[j].we < min )
			{
				min = flag[j].we;
				k = j;
			}
		}
		
		if( map[k][flag[k].pre] - 0.01 > 0 )
		{
			result[len].s = flag[k].pre;
			result[len].e = k;
			++len;
		}

		for(j = 0; j < town_count; ++j)
		{
			if( map[j][k] < flag[j].we )
			{
				flag[j].we = map[j][k];
				flag[j].pre = k;
			}
		}
	}
	
	for(i = 0; i < len; ++i)
	{
		printf("%d %d\n",result[i].e + 1,result[i].s + 1);
	}
	

	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator