Pagini recente » Cod sursa (job #1181768) | Cod sursa (job #2032085) | Cod sursa (job #2565079) | Cod sursa (job #305089) | Cod sursa (job #559843)
Cod sursa(job #559843)
#include <cstdio>
#include <cstring>
#define INF 10000001
/*
struct Node
{
Node *next;
int key;
};
struct Graph
{
Node **ajdList;
int nodeCount;
};
*/
int graph[1000][1000], war[1000][1000];
int main()
{
int nodeCount, edgeCount, journeys;
//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;
}