WA+TLE 0求助(Floyd预期30分,求错处)
查看原帖
WA+TLE 0求助(Floyd预期30分,求错处)
1366699
programmer330楼主2024/11/23 13:52
#include<bits/stdc++.h>
#pragma GCC optimize(2)
#define int long long
using namespace std;
int nn,mm,num;
int c[1000001];
int d[1000001];
int e[1000001];
int f[7001][7001];

signed main(){
	ios::sync_with_stdio;
	cin.tie(0);
	cout.tie(0);
	cin>>nn>>mm>>num;
	memset(f,100000000,sizeof f);
	for(int i=1;i<=mm;i++){
		int a,b,t;
		cin>>a>>b>>t;
		f[a][b]=min(f[a][b],t);
		f[b][a]=f[a][b];
	}
	int tot=0;
	for(int i=1;i<=num;i++){
		cin>>c[i]>>d[i];
		e[tot++]=c[i];
	}
	for (int k = 1; k <= nn; k++) {
        for (int x = 1; x <= nn; x++) {
            for (int y = 1; y <= nn; y++) {
            	if(x==y)f[x][y]=0; 
                f[x][y] = min(f[x][y], f[x][k] + f[k][y]);
            }
        }
    }
    for(int i=1;i<=nn-1;i++){
    	int ans1=f[i][nn];
    	int ans2=1e9;
    	int ans3=1e9;
    	int p=0;
    	for(int j=0;j<=tot-1;j++){
    		if(f[i][e[j]]+f[e[j]][nn]<ans2){
    			ans2=f[i][e[j]]+f[e[j]][nn];
    			p=e[j];
    			ans3=min(ans3,ans2-ans1);
    			
			}
    		
    		
		}
		if(ans3<=d[p]){
			cout<<"1"<<endl;
			
		}else{
			cout<<"0"<<endl;
		}
		
	}
    

	return 0;
}
2024/11/23 13:52
加载中...