USACO 3.1 Agri-Net

来源:互联网 发布:java什么是工厂模式 编辑:程序博客网 时间:2024/04/29 12:47
#include <stdio.h>#define DEBUG 1#define TESTCASES 9#define MAX_FARMS 100#define INF 1e6int distanceMatrix[MAX_FARMS + 1][MAX_FARMS + 1];int distanceArray[MAX_FARMS + 1];int visited[MAX_FARMS + 1];int main(){#if DEBUGint testCase;for (testCase = 1; testCase <= TESTCASES; testCase++){char inputFileName[20] = "inputx.txt";inputFileName[5] = '1' +  (testCase - 1);freopen(inputFileName, "r", stdin);printf("\n#%d\n", testCase);#endifint numOfFarms;scanf("%d", &numOfFarms);int from, to;for (from = 1; from <= numOfFarms; from++)for (to = 1; to <= numOfFarms; to++)scanf("%d", &distanceMatrix[from][to]);int farm;for (farm = 1; farm <= numOfFarms; farm++){visited[farm] = 0;distanceArray[farm] = distanceMatrix[1][farm];}while (1){int nearestFarm = 0, minDistance = INF;for (farm = 1; farm <= numOfFarms; farm++)if (visited[farm] == 0 && distanceArray[farm] < minDistance){nearestFarm = farm;minDistance = distanceArray[farm];}if (minDistance == INF)break;visited[nearestFarm] = 1;for (farm = 1; farm <= numOfFarms; farm++)if (visited[farm] == 0 && distanceMatrix[nearestFarm][farm] < distanceArray[farm])distanceArray[farm] = distanceMatrix[nearestFarm][farm];}int result = 0;for (farm = 1; farm <= numOfFarms; farm++)result += distanceArray[farm];printf("%d\n", result);#if DEBUG}#endifreturn 0;}

0 0
原创粉丝点击