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 ...
随机推荐
- Decoration5:引入Actuator进行站点监控
1.添加依赖 2.重启应用 3.下图显示了一些默认的监控端点 这是数据可以在前台用来做饼图和柱状图什么的,不过实际上我们现在还用不到,于是就不深入研究
- python内置函数之print()
定义:将值打印到一个流对象,或者默认打印到sys.stdout. 语法: print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=Fal ...
- HDU 3336 Count the string 查找匹配字符串
Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Windows Phone 推送通知的第四类推送
在 MSDN 文档有关 Windows Phone 推送通知 有关推送的内容包含 Tile.Toast.Raw 这三种通知.这三种通知 的方式类似,运用的场合不同,这里不再赘述,它们的运行原理类似: ...
- [转]软件测试 Top 120 Blog (博客)
[转]软件测试 Top 120 Blog (博客) 2015-06-08 转自: 软件测试 Top 120 Blog (博客) # Site Author Memo DevelopSense M ...
- service文件(格林速洗项目)
service文件模板:String url="http://59.78.93.208:9097/Order?id="+id+"&value="+val ...
- android 批量上传图片
额外还需要NetUtil和服务器端UpLoadPicture package com.example.girdviewtest; import java.util.ArrayList;import j ...
- linux如何查看CPU,内存,机器型号,网卡信息
查看CPU信息(型号)# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU ...
- JavaScript 框架 jQuery 的下载和安装
jQuery 简介: jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 很容易学习. jQuery 下载: // 官网: htt ...
- LT和ET模式
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include &l ...