题目链接:http://acm.timus.ru/problem.aspx?space=1&num=2005
input | output |
---|---|
0 2600 3800 2600 2500 2600 0 5300 3900 4400 3800 5300 0 1900 4500 2600 3900 1900 0 3700 2500 4400 4500 3700 0 |
13500 1 2 3 4 5 |
题意:
找最短路!且第3点不能在第四条路径!
代码如下:
#include <cstdio> #include <cstring> #define INF 0x3f3f3f3f int a[7][7]; //void Floyd() //{ // for(int k = 1; k <= 5; k++) // { // for(int i = 1; i <= 5; i++) // { // for(int j = 1; j <= 5; j++) // { // if(a[i][k]+a[k][j] < a[i][j]) // { // a[i][j] = a[i][k]+a[k][j]; // } // } // } // } //} int main() { for(int i = 1; i <= 5; i++) { for(int j = 1; j <= 5; j++) { scanf("%d",&a[i][j]); } } // Floyd(); int ans = 0; int r[7]; int minn = INF; for(int i = 2; i <= 4; i++)//2 { for(int j = 2; j <= 4; j++)//3 { for(int k = 2; k <= 4; k++)//4 { if(i!=j && i!=k && j!= k && k!=3) { int tt = a[1][i]+a[i][j]+a[j][k]+a[k][5]; if(tt < minn) { minn = tt; r[2] = i, r[3] = j, r[4] = k; } } } } } printf("%d\n",minn); printf("1 %d %d %d 5\n",r[2],r[3],r[4]); return 0; }
URAL 2005. Taxi for Programmers (最短路 数学啊)
原文地址:http://blog.csdn.net/u012860063/article/details/43740253