HDU1874 单源最短路经 dijkstra或者floyd

#include
using namespace std;
int map[205][205]; //保存道路信息 
int mark[205];	   //mark[i]==1 代表城市i被标星
int tolen[205];    //tolen[i]==x 代表起点城市到i城市的距离为x
 
void init(int X)//把数组初始化 
{
	for(int i=0;i>N>>M){
		init(N);//初始化 
		for(int i=0;i>city1>>city2>>road_len;
			if(map[city1][city2]>road_len){//两个城市可能有多条路径,取最短
				map[city1][city2]=road_len;
				map[city2][city1]=road_len;//道路是双向的 
			}
			
		}
		cin>>from>>to;
		//dijkstra
		//用城市from初始化一些数据
		
		//dijkstra
		mark[from]=1;//起始点首先标星
		for(int i=0;itolen[i]){
					which_len=tolen[i];
					which=i;
				}
			} 
			if(which!=-1){ //如果仍然有可标点 开始用它松弛 
				mark[which]=1;//标记这个点 
				for(int i=0;itolen[which]+map[which][i]){
						tolen[i]=tolen[which]+map[which][i];
						
					}
				} 
			}
			else
			{
				break;
			}
		}
		if(tolen[to]==0xfffffff)cout<<-1<

 

你可能感兴趣的:(图)