CodeForces 24A Ring road(dfs)
2 seconds
256 megabytes
standard input
standard output
Nowadays the one-way traffic is introduced all over the world in order to improve driving safety and reduce traffic jams. The government of Berland decided to keep up with new trends. Formerly all ncities
of Berland were connected by n two-way roads in the ring, i. e. each city was connected directly to exactly two other cities, and from
each city it was possible to get to any other city. Government of Berland introduced one-way traffic on all n roads, but it soon became
clear that it's impossible to get from some of the cities to some others. Now for each road is known in which direction the traffic is directed at it, and the cost of redirecting the traffic. What is the smallest amount of money the government should spend
on the redirecting of roads so that from every city you can get to any other?
The first line contains integer n (3 ≤ n ≤ 100)
— amount of cities (and roads) in Berland. Next nlines contain description of roads. Each road is described by three integers ai, bi, ci(1 ≤ ai, bi ≤ n, ai ≠ bi, 1 ≤ ci ≤ 100)
— road is directed from city ai to
city bi,
redirecting the traffic costs ci.
Output single integer — the smallest amount of money the government should spend on the redirecting of roads so that from every city you can get to any other.
3
1 3 1
1 2 1
3 2 1
1
3
1 3 1
1 2 5
3 2 1
2
6
1 5 4
5 3 8
2 4 15
1 6 16
2 3 23
4 6 42
39
4
1 2 9
2 3 8
3 4 7
4 1 5
0
深搜
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <vector>
using namespace std;
vector<pair<int,int> >a[105];
vector<pair<int,int> >b[105];
int n;
int num;
int now;
void dfs(int x,int pre)
{
if(x==now)
return;
if(a[x].size()>0&&a[x][0].first!=pre)
dfs(a[x][0].first,x);
else if(a[x].size()>1&&a[x][1].first!=pre)
dfs(a[x][1].first,x);
else if(b[x].size()>0&&b[x][0].first!=pre)
{
num+=b[x][0].second;
dfs(b[x][0].first,x);
}
else if(b[x].size()>1&&b[x][1].first!=pre)
{
num+=b[x][1].second;
dfs(b[x][1].first,x);
}
}
int main()
{
scanf("%d",&n);
int x,y,z; for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&x,&y,&z);
a[x].push_back(make_pair(y,z));
b[y].push_back(make_pair(x,z));
}
int ans=1e9;
for(int i=1;i<=n;i++)
{
num=0;
now=i;
if(a[i].size()>0)
{
num=0,now=i;
dfs(a[i][0].first,i);
ans=min(ans,num);
}
if(a[i].size()>1)
{
num=0,now=i;
dfs(a[i][1].first,i);
ans=min(ans,num);
}
if(b[i].size()>0)
{
num=0,now=i;
num+=b[i][0].second;
dfs(b[i][0].first,i);
ans=min(ans,num);
}
if(b[i].size()>1)
{
num=0,now=i;
num+=b[i][1].second;
dfs(b[i][1].first,i);
ans=min(ans,num);
} }
printf("%d\n",ans);
return 0; }
CodeForces 24A Ring road(dfs)的更多相关文章
- CodeForces 27D - Ring Road 2 构图2-sat..并输出选择方案
题意 n个数1~n按顺序围成一个圈...现在在某些两点间加边..边可以加在圈内或者圈外..问是否会发生冲突?如果不发生冲突..输每一条边是放圈内还是圈外. 题解 ...
- HDOJ(HDU).1016 Prime Ring Problem (DFS)
HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开始DFS(3)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- [Codeforces 1214D]Treasure Island(dfs)
[Codeforces 1214D]Treasure Island(dfs) 题面 给出一个n*m的字符矩阵,'.'表示能通过,'#'表示不能通过.每步可以往下或往右走.问至少把多少个'.'变成'#' ...
- [Codeforces 163D]Large Refrigerator (DFS+剪枝)
[Codeforces 163D]Large Refrigerator (DFS+剪枝) 题面 已知一个长方体的体积为V,三边长a,b,c均为正整数,求长方体的最小表面积S V以质因数分解的形式给出 ...
- Codeforces 839C Journey【DFS】
C. Journey time limit per test:2 seconds memory limit per test:256 megabytes input:standard input ou ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- Codeforces Gym 100463D Evil DFS
Evil Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Descr ...
- HDU 1016 Prime Ring Problem (DFS)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Educational Codeforces Round 25 Five-In-a-Row(DFS)
题目网址:http://codeforces.com/contest/825/problem/B 题目: Alice and Bob play 5-in-a-row game. They have ...
随机推荐
- 如何生成项目的chm文档
如何生成项目的chm文档 2014-11-30 Generate .chm based documentation of your project using SandCastle tool
- ural1517后缀数组
题意:求两串字符(0————255)的最长公共字串 思路:先将两个字符链接起来,中间用一个不曾出现过的字符,然后直接求出height数组,然后根据它的特性,求出最长的公共字串,当然这个最长公共字串的坐 ...
- RFID Hacking–资源大合集
原文: http://www.freebuf.com/news/others/605.html http://www.proxmark.org/forum/index.php RFID破解神器官方论坛 ...
- PHP——小尾巴之流程处理
说明:首先新建一个流程,把处理流程的节点人员添加进去,最后点确定提交至数据库 处理流程:不同用户登录进去处理自己的节点部分对其审核通过 新建两个流程: 第一个为借款流程:处理顺序为:李四发起=> ...
- netifd
Netifd是OpenWrt中用于进行网络配置的守护进程,基本上所有网络接口设置以及内核的netlink事件都可以由netifd来处理完成. 在启动netifd之前用户需要将所需的配置写入uci配置文 ...
- [算法]滴滴笔试题——求最大子串和(O(n)复杂度)
扫描法.一次扫描数组即可得出答案,复杂度O(n).这种方法用文字描述不容易说清楚,下面用每一步运算的图示来表达.伪代码如下: maxsofar=end=; ,n) end=max(end+x[i],) ...
- HDFS的实现机制
参考以上这张图,实际上我们客户端访问HDFS里面的内容时,并不需要真实知道内容存在于服务器的内容的真实路径,我们只需要知道一个虚拟路径就可以,比如最上面的hdfs://weekend110:9000/ ...
- 数论 + 公式 - HDU 4335 What is N?
What is N? Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4335 Mean: 给你三个数b.P.M,让你求有多少个n满 ...
- C#调用系统API
API简介 1) C#中的简单数据类型与API中的数据类型对应关系 2) 如何在调用API时传递复杂参数:封装类.结构和联合 3) 如何调用API 4) 如何确保成功调用API
- Java凝视模板
设置凝视模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是全部需设置凝 ...