P1119 floyd算法样例过了,全WA
  • 板块题目总版
  • 楼主KevinHu0402
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/16 12:56
  • 上次更新2024/1/16 17:14:37
查看原帖
P1119 floyd算法样例过了,全WA
639402
KevinHu0402楼主2024/1/16 12:56
#include <bits/stdc++.h>
#define maxn 210
#define inf 0x3f3f3f3f
using namespace std;
int a[maxn],w[maxn][maxn],f[maxn][maxn];
int n;
void setnum(){
    for(int i = 0;i < n;i++){
        for(int j = 0;j < n;j++){
            f[i][j] = inf;
        }
    }
    for(int i = 0;i < n;i++){
    	f[i][i] = 0;
	}
}//初始化 

void floyd(int k){
    for(int i = 0;i < n;i++){
        for(int j = 0;j < n;j++){
            if(f[i][j] > f[i][k] + f[k][j]){
            	f[i][j] = f[i][k] + f[k][j];
			}
        }
    }
}//floyd主函数 

int main(){
    int m;
    cin >> n >> m;
    for(int i = 0;i < n;i++){
    	cin >> a[i];
	}
    setnum();
    for(int i = 1;i <= m;i++){
        int x,y,z;
        cin >> x >> y >> z;
        f[x][y] = f[y][x] = z;
	}
    int q;
    cin >> q;
    int last = 0;
    for(int i = 1;i <= q;i++){
        int x,y,t;
        cin >> x >> y >> t;
		if(a[x] > t || a[y] > t){
            cout << "-1" << endl;
            continue;
        }
        int j;
        for(j = last;j < n;j++){
            if(a[j] > t) break;
            floyd(j);
        }
		last = j;
        if(f[x][y] == inf){
        	cout << "-1";
		}
        else{
        	cout << f[x][y];
	    }
	}
    return 0;
}
2024/1/16 12:56
加载中...