`
linest
  • 浏览: 155676 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

pat-1003* Emergency

    博客分类:
  • pat
 
阅读更多
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;

}

分享到:
评论

相关推荐

    pat题目分类.docx

    - **最短路径算法** (如1003 Emergency, 1072 Gas Station, 1087 All Roads Lead to Rome, 1030 Travel Plan): 主要涉及Dijkstra算法,需要理解和实现这个经典算法。 - **最大团问题** (1142 Maximal Clique): ...

    北师大版高中英语选修7(部分单词表)

    - **例句**:“In case of emergency, please use the nearest exit.”(紧急情况下,请使用最近的出口。) #### dilemma - **含义**:困境;进退两难的窘境 - **例句**:“He faced a dilemma between choosing ...

    浙江大学pat题目集合(1001-1072)

    1003. Emergency(25分): 这道题与图论和最短路径计算相关。模拟了一个城市紧急救援队队长的角色,需要根据地图上的城市和道路信息,找出从出发城市到目标城市的最短路线,并沿途动员最多的救援队伍。输入包含一个...

    浙江大学pat题目集合(1001-1080)

    而编号1003的题目——Emergency (25)——则是一个典型的图论问题,涉及到最短路径的计算。在这个问题中,编程者需要模拟一个城市救援任务的场景,通过计算最短路径来调动救援力量。这一类型的题目不仅考察了编程者对...

    浙江大学pat题目集合(1001-1091)

    1003题——Emergency,此题模拟了一个紧急救援团队队长的场景。你需要根据给定的城市地图,找出从当前城市出发到达目标城市最快的路线,并在途中动员尽可能多的救援队伍。输入案例包含了城市之间的连接信息,包括每...

    PAT 题目精解但(包括1000题)

    例如,1003题"Emergency"可能涉及到使用贪心策略来解决问题。解题时,需要从问题描述出发,确定贪心选择的标准,然后构建局部最优解,直至得到全局最优解。 4. Dijkstra算法:在图论和网络流问题中,Dijkstra算法是...

    pat题集word

    **题1003:Emergency (25)** 这个题目可能是关于路径规划和最优化的问题,模拟紧急救援情况。你可能需要读取一个城市地图的数据,包括各城市之间的连接道路以及救援队伍数量和道路长度。你的任务是在接到紧急呼叫时...

    PAT甲级真题练习1

    PAT甲级真题练习1 PAT(Programming Ability Test)是一种针对程序设计能力的测试,旨在评估程序员的编程能力和解决问题的能力。PAT 甲级真题练习1是其中的一份练习题,共包含15个问题,涵盖了字符串处理、数据结构...

    PAT甲级题解.pdf

    3. Dijkstra算法:尽管在文件片段中没有详细解释Dijkstra算法,但根据题名"Emergency"(编号1003)可以推测,这个问题可能涉及图论中的单源最短路径问题。Dijkstra算法是一种用于在加权图中找到从单一源点到所有其他...

    程序员刷题judge-PAT_Solutions::lollipop:MyPAT(AdvancedLevel)练习解决方案

    Emergency(25 分) 解题思路 先通过 dijkstra 算法求出最短的路径长度,之后从终点回溯 dfs,记录满足:dis[u] + cost(u, v) = dis[v] 的点,生成路径。递归出口:u 是起点。 先用 dijkstra 算法求出最短路,使用 ...

Global site tag (gtag.js) - Google Analytics