记录PTA甲级以及C++部分语法知识1003

代码源自:https://blog.csdn.net/fynjy/article/details/46822835

感谢!迪杰斯特拉算法,因为所求较为简单,思路还是比较清晰的

#include//cin>>//cout<<

using namespace std;


const int Max_required = 505;
const int Max_int = 0x7fffffff;
int map[Max_required][Max_required];
int callnum[Max_required];//每个城市的救火车数量

struct CITY
{
    int dist;//该结点和start结点的最短距离
    bool visited;//是否被访问
    int number;//最短路径数量
    int call;//求援队伍数量
}city[Max_required];

void Dijkstra(int start,int end, int n)
{
    for(int i=0;icity[pos].dist+map[pos][j])//和开始结点间的最短距离大于...
                {
                    city[j].dist=city[pos].dist+map[pos][j];
                    city[j].number=city[pos].number;//更新了与开始结点间最短距离的城市再更新到J城市最短路径数=选定城市的最短路径数
                    city[j].call=city[pos].call+callnum[j];///更新J城市的可召唤救援队数量
                }
                else if(city[j].dist==city[pos].dist+map[pos][j])//相等
                {
                    city[j].number+=city[pos].number;//最短路径加一
                    if(city[j].call>n>>m>>start>>end;
    int i;
    for(i=0;i>callnum[i];
    int a,b,l;
    for(i=0;i>a>>b>>l;
        map[a][b]=l;
        map[b][a]=l;
    }
    Dijkstra(start,end, n);
    return 0;
}

 

你可能感兴趣的:(记录PTA甲级以及C++部分语法知识1003)