1003:
dfs遍历所有路径。
#include <iostream>
#include <vector>
using namespace std;
int city;
int road;
int collect=0;
int maxcollect=0;
int shortnum=0;
int used[501];
int team[501]={0};
int minpass[501]={0};
int shortdis=100000000;
int curdis=0;
int map[501][501]={0};
int S,T;
vector<int> path;
void dfs(int u)
{
if(u==T)
{
for(int i=0;i<path.size();i++)
{
collect+=team[path[i]];
}
for(int i=0;i<path.size()-1;i++)
{
curdis+=map[path[i]][path[i+1]];
}
if(curdis<shortdis)
{
shortnum=1;
shortdis=curdis;
maxcollect=collect;
}
else if(curdis==shortdis)
{
shortnum++;
if(collect>maxcollect)
maxcollect=collect;
}
curdis=0;
collect=0;
}
else
{
for(int v=0;v<501;v++)
if(map[u][v])
{
if(used[v]==false) //avoid loop
{
used[v]=true;
path.push_back(v);
dfs(v);
path.pop_back();
used[v]=false;
}
}
}
}
int main()
{
int x;
int y;
int value;
int i;
int j;
cin>>city;
cin>>road;
cin>>S;
cin>>T;
for(i=0;i<city;i++)
cin>>team[i];
for(i=0;i<road;i++)
{
cin>>x;
cin>>y;
cin>>value;
map[x][y]=value;
map[y][x]=value;
}
path.push_back(S);
used[S] = 1;
dfs(S);
used[S] = 0;
path.pop_back();
printf("%d %d",shortnum,maxcollect);
return 0;
}
分享到:
相关推荐
- **最短路径算法** (如1003 Emergency, 1072 Gas Station, 1087 All Roads Lead to Rome, 1030 Travel Plan): 主要涉及Dijkstra算法,需要理解和实现这个经典算法。 - **最大团问题** (1142 Maximal Clique): ...
- **例句**:“In case of emergency, please use the nearest exit.”(紧急情况下,请使用最近的出口。) #### dilemma - **含义**:困境;进退两难的窘境 - **例句**:“He faced a dilemma between choosing ...
1003. Emergency(25分): 这道题与图论和最短路径计算相关。模拟了一个城市紧急救援队队长的角色,需要根据地图上的城市和道路信息,找出从出发城市到目标城市的最短路线,并沿途动员最多的救援队伍。输入包含一个...
而编号1003的题目——Emergency (25)——则是一个典型的图论问题,涉及到最短路径的计算。在这个问题中,编程者需要模拟一个城市救援任务的场景,通过计算最短路径来调动救援力量。这一类型的题目不仅考察了编程者对...
1003题——Emergency,此题模拟了一个紧急救援团队队长的场景。你需要根据给定的城市地图,找出从当前城市出发到达目标城市最快的路线,并在途中动员尽可能多的救援队伍。输入案例包含了城市之间的连接信息,包括每...
例如,1003题"Emergency"可能涉及到使用贪心策略来解决问题。解题时,需要从问题描述出发,确定贪心选择的标准,然后构建局部最优解,直至得到全局最优解。 4. Dijkstra算法:在图论和网络流问题中,Dijkstra算法是...
**题1003:Emergency (25)** 这个题目可能是关于路径规划和最优化的问题,模拟紧急救援情况。你可能需要读取一个城市地图的数据,包括各城市之间的连接道路以及救援队伍数量和道路长度。你的任务是在接到紧急呼叫时...
PAT甲级真题练习1 PAT(Programming Ability Test)是一种针对程序设计能力的测试,旨在评估程序员的编程能力和解决问题的能力。PAT 甲级真题练习1是其中的一份练习题,共包含15个问题,涵盖了字符串处理、数据结构...
3. Dijkstra算法:尽管在文件片段中没有详细解释Dijkstra算法,但根据题名"Emergency"(编号1003)可以推测,这个问题可能涉及图论中的单源最短路径问题。Dijkstra算法是一种用于在加权图中找到从单一源点到所有其他...
Emergency(25 分) 解题思路 先通过 dijkstra 算法求出最短的路径长度,之后从终点回溯 dfs,记录满足:dis[u] + cost(u, v) = dis[v] 的点,生成路径。递归出口:u 是起点。 先用 dijkstra 算法求出最短路,使用 ...