溢出,求调
  • 板块题目总版
  • 楼主lghyh
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/22 15:35
  • 上次更新2024/7/22 16:25:50
查看原帖
溢出,求调
800273
lghyh楼主2024/7/22 15:35
#include<bits/stdc++.h>
using namespace std;
#define inf 0x7fffffff
bool flag[100000];
int n,m,s,a[100000][100000],op1,op2,dis[100000];
int main(){
	freopen("main.in","r",stdin);
	freopen("main.out","w",stdout);
    scanf("%d%d%d",&n,&m,&s);
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[i][j]=inf;
    for(int i=0;i<m;i++){
        scanf("%d%d",&op1,&op2);
        scanf("%d",&a[op1-1][op2-1]);
    }
    flag[s]=true;
    for(int i=0;i<n;i++) dis[i]=a[s][i];
    for(int i=1;i<n;i++){
        for(int j=0;j<n;j++){
            op2=inf;
            if(!flag[j]&&dis[j]<op2){
                op2=dis[j];
                op1=j;
            }
        }
        flag[op1]=true;
        for(int j=0;j<n;j++){
            op2=(a[op1][j]==inf)?inf:dis[op1]+a[op1][j];
            if(!flag[j]&&op2<dis[j]) dis[j]=op2;
        }
    }
    for(int i=0;i<n;i++) printf("%d ",dis[i]);
    return 0;
}
2024/7/22 15:35
加载中...