求助~~~~修改了一个小时还没弄好,输出全是-1
  • 板块P2683 小岛
  • 楼主lihuinan
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/3/8 21:06
  • 上次更新2023/10/28 07:00:51
查看原帖
求助~~~~修改了一个小时还没弄好,输出全是-1
656142
lihuinan楼主2022/3/8 21:06
#include<bits/stdc++.h>
using namespace std;

const int INF=1e6;
int N,M;
int G[110][110];
bool vis[110]={false};
int d[110];

void dj(int s){
	fill(d,d+N+1,INF);
	d[s]=0;
	for(int i=1;i<=N;i++){
		int u=-1,min=INF;
		for(int j=1;j<=N;j++){
			if(vis[j]==false&&d[j]<min){
				u=j;
				min=d[j];
			}
		}
		if(u==-1) return ;
		vis[u]=true;
		for(int v=1;v<=N;v++){
			if(vis[v]==false&&G[u][v]!=INF&&d[u]+G[u][v]<d[v]){
				d[v]=G[u][v]+d[u];
			}
		}
		
	}
}
int main(){
	cin>>N>>M;
	fill(G[1],G[1]+110*110,INF);
	for(int i=0;i<M;i++){
		int ch;
		cin>>ch;
		if(ch==1){
			int x1,y1,z1;
			cin>>x1>>y1>>z1;
			
			if(z1<G[x1][y1]){
				G[x1][y1]=G[y1][x1]=z1;
			}
		}
		if(ch==0){
			int start,end;
			cin>>start>>end;
			dj(start);
			if(d[end]!=INF)cout<<d[end];
			else cout<<"-1"<<endl;
		}
	}
	return 0;
}
2022/3/8 21:06
加载中...