D - Constructing Roads POJ - 2421

D - Constructing Roads POJ - 2421

题意:有一些村庄需要修一些道路是所有村庄都可以连接,不过有些道路已经修好了,问题最少还需要修建的道路长度是多少。

输入的第一行是一个N代表N个村庄,下面是一个N*N的矩阵,代表着i->j的距离,然后输出一个Q,接着有Q行,表示AB已经修建的村庄

思路:为了增加麻烦他们设定了一些已经修建的村庄,使用krusal做,把已经修建的边都连接上

#include
#include
using namespace std;
#define INF 3000
struct village
{
	int a,b,cost;
}p[10000+5];
int parent[100+5];
bool com(village a,village b)
{
	return a.costroad[v][j]])
			dis[j]=road[v][j];
		}
	}
	int ans=0;
	for(int i=1;i<=num;i++)
	{
		ans+=dis[i];
	}
	printf("%d",ans);
}
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
				road[i][j]=INF; 
		}
		num=n;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
			scanf("%d",road[i][j]);
		prime(); 
	}
	return 0;
}*/

你可能感兴趣的:(ACM,最小生成树)