Cod sursa(job #559826)

Utilizator eukristianCristian L. eukristian Data 18 martie 2011 09:51:29
Problema Radiatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <cstdio>
#include <cstring>

#define INF 1000000001

/*
struct Node
{
	Node *next;
	int key;
};

struct Graph
{
	Node **ajdList;
	int nodeCount;
};
*/

int main()
{
	int nodeCount, edgeCount, journeys;
	int graph[10000][10000], war[10000][10000];
	//Graph gr;
	FILE *f = fopen("radiatie.in", "r"), *g = fopen("radiatie.out", "w");
	
	fscanf(f,"%d %d %d\n", &nodeCount, &edgeCount, &journeys);
	
	//gr.adjList = new Node*[gr.nodeCount + 1];
	//memset(gr.adjList, 0, sizeof(Node *) * (gr.nodeCount + 1));
	
	for (int i = 1; i <= nodeCount; ++i)
	{
		for (int j = 1; j <= nodeCount; ++j)
			if (i != j)
				graph[i][j] = graph[j][i] = INF;
		graph[i][i] = 0;
	}
	
	for (int i = 1 ; i <= edgeCount ; ++i)
	{
		int ver1, ver2, cost;
		fscanf(f, "%d %d %d\n", &ver1, &ver2, &cost);
		graph[ver1][ver2] = graph[ver2][ver1] = cost; 
	}
	
	for (int i = 1; i <= nodeCount ; ++i)
	{
		for (int j = 1 ; j <= nodeCount ; ++j)
		{
			war[i][j] = graph[i][j];
		}
	}
	
	for (int k = 1 ; k <= nodeCount ; ++k)
		for (int i = 1; i <= nodeCount ; ++i)
			for (int j = 1 ; j <= nodeCount ; ++j)
			{
				int max = war[i][k];
				if (max < war[k][j])
					max = war[k][j];
				if (war[i][j] > max)
					war[i][j] = max;
				
			}
	
	
	for (int i = 1 ; i <= journeys ; ++i)
	{
		int dest, source;
		fscanf(f, "%d %d",&dest,&source);
		fprintf(g, "%d\n",war[dest][source]);
	}
	
	fclose(f);fclose(g);
	
	return 0;
}