Sicily 1155. Can I Post the lette

#include<iostream>
#include<memory.h>
using namespace std;
bool a[200];//标记是否走过
int b[200][200];
int n,m;
bool flag;
void dfs(int start,int count)
{
	if(start==n-1)
    {
    	flag=true;
    	return;
	}
	else if(start==n)
	{
		flag=false;
		return;
	}
	else
	{
	for(int i=0;i<n;i++)
	{
		if(b[start][i]==0&&!a[i])
		{
			dfs(i,count+1);
			a[i]=1;
		}
	 } 

	}

}
int main(int argc, char **argv)
{
	while(cin>>n&&n!=0)
	{
	cin>>m;
    memset(a,false,sizeof(a));
    memset(b,-1,sizeof(b));

    int p,q;
    for(int i=0;i<m;i++)
    {
    	cin>>p>>q;
    	b[p][q]=0;
	}
	flag=false;
	dfs(0,0);
	if(flag)
	{
		cout<<"I can post the letter"<<endl;
	}
	else
	{
		cout<<"I can‘t post the letter"<<endl;
	}
    } 

	return 0;

}

  思路:深度搜索每个城市是否存在道路,并用一个数组保存访问记录,识别能不能到达终点。

时间: 2024-10-05 05:25:40

Sicily 1155. Can I Post the lette的相关文章

1155. Can I Post the lette

#include "iostream" #include "memory.h" #include "cstdio" using namespace std; int road[201][201]; int n, m; /* 利用弗洛伊德算法来解这道题,如果两个城市可以连通, 则其距离为0 */ inline void floyd(){ for (int i = 0; i < n; i++){ for (int j = 0; j < n

编程题目分类(剪辑)

1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代数 13. 组合问题 14. 数论 15. 网格,几何,计算几何 [编程入门] PC 110101, uva 100, The 3n+1 problem, 难度 1 PC 110102, uva 10189, Minesweeper, 难度 1 PC 110103, uva 10137, The T

(转)sicily题目分类

Sicily题目分类 ·         [数据结构/图论] 1310 Right-Heavy Tree   笛卡尔树相关,复杂度O(N)或O(NlogN). ·1426 Phone List         电话号码前缀检索,trie树相关. ·1443 Printer Queue      基本队列操作. ·1149 等价表达式         判断表达式是否等价(递归求解) ·1136 山海经             n长序列里求m次区间询问的最大连续子区间和.线段树/RMQ ·1252

POJ 1155 树状dp

TELE Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3856   Accepted: 2054 Description A TV-network plans to broadcast an important football match. Their network of transmitters and users can be represented as a tree. The root of the tre

Sicily 1146:Lenny&#39;s Lucky Lotto(dp)

题意:给出N,M,问有多少个长度为N的整数序列,满足所有数都在[1,M]内,并且每一个数至少是前一个数的两倍.例如给出N=4, M=10, 则有4个长度为4的整数序列满足条件: [1, 2, 4, 8], [1, 2, 4, 9], [1, 2, 4, 10], [1, 2, 5, 10] 分析:可用动态规划解题,假设dp[i][j],代表满足以整数i为尾数,长度为j的序列的个数(其中每一个数至少是前一个数的两倍).那么对于整数i,dp[i][j] 等于所有dp[k][j-1]的和,其中k满足:

Bungee Jumping hdu 1155(物理)

http://acm.hdu.edu.cn/showproblem.php?pid=1155 题意:给出一个人蹦极的高度,绳子的长度,绳子的弹力系数,以及他自身体重.问你他是停留在空中还是安全落地还是速度过大撞死了(V>10). 分析:一年不学物理,物理真成渣了.不过百度看的解析,公式好熟悉啊... mgh=k*x*x/2+m*v*v/2(x为形变量) #include <iostream> #include <stdio.h> #include <string.h&g

sicily 1345 能量项链

先模拟一下确定理解题意,然后再找状态转移方程,注意方向~ 1 //sicily 1345 能量项链 2 #include <bits/stdc++.h> 3 4 using namespace std; 5 6 int a[205]; 7 int dp[205][205]; 8 9 int main() 10 { 11 int n; 12 while(cin >> n) 13 { 14 memset(dp, 0, sizeof(dp)); 15 for(int i=0; i<

POJ 1155 TELE

TELE Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 115564-bit integer IO format: %lld      Java class name: Main A TV-network plans to broadcast an important football match. Their network of transmitters an

POJ 1155 (树形DP+背包)

题目链接: http://poj.org/problem?id=1155 题目大意:电视台转播节目.对于每个根,其子结点可能是用户,也可能是中转站.如果是中转站则花钱,如果是用户,则收钱.问在不亏本的前提下最多能有多少个用户看到节目. 解题思路: 树形背包.cost=1. 且有个虚根0,取这个虚根也要cost,所以最后的结果是dp[0][m+1]. 本题是cost=1的特殊背包问题,在两个for循环上有一个优化. for(f+1...j....cost) for(1....k...j-cost)