UVa 12118 - Inspector's Dilemma(DFS判连通+欧拉回路)

来源:互联网 发布:qq文件恢复软件 编辑:程序博客网 时间:2024/05/21 14:47

昨天统计题数错联系锟神时提到了这道题,给他讲了我的思路,感觉博客写的太简略,正好百题之后准备重新理一遍博客,所以就先来写写这道题。

有v个城市,每个城市间都有道路连通,要检查e个道路,起点终点任选。输入v、e、检查每个道路的时间t。求最少总时间。

求最少总时间,感觉与UVa818切锁链中的环有些神似。

所给的e条道路是必经的,只需要找到最少的路使得给的路形成欧拉道路即可。

首先,对所有的道路判连通,假设形成了n个连通组,那么连起来就需要n-1条路。

然后,统计每组中度数为奇数的点,每一个奇数点都要构造另一条路使之度数为偶数,但是每一组仅需形成一条链而不是环,仅需形成欧拉道路而不是欧拉回路,所以统计个数要减去链的端点2。

最后,求每组的和,减去一就是需要连成一个整体所用的道路数,加上e,总道路就求出来的。

#include<iostream>#include<vector>#include<cstring>using namespace std;const int maxn=1010;int v,e,t,cnt;bool vis[maxn];vector<int> g[maxn];bool read(){    cin>>v>>e>>t;    if(!v&&!e&&!t) return false;    for(int i=0;i<maxn;++i)        g[i].clear();    memset(vis,0,sizeof(vis));    for(int i=0;i<e;++i){        int a,b;        cin>>a>>b;        g[a].push_back(b);        g[b].push_back(a);    }    return true;}void dfs(int cur){    if(vis[cur]) return;    vis[cur]=true;    cnt+=(int)g[cur].size()&1;//统计度数为奇数的点。    for(int i=0;i<g[cur].size();++i)        dfs(g[cur][i]);//DFS求连通。    return;}int solve(){    int ans=0;    for(int i=1;i<=v;++i){        if(!vis[i]&&!g[i].empty()){            cnt=0;            dfs(i);            ans+=max(cnt,2);//每条道路至少需要2个端点,防止出现回路出错。        }    }    return t*(max(ans/2-1,0)+e);//之前求得的和减去初始值任选可以减少的一次,再加上必经的e条道路。}int main(){    ios::sync_with_stdio(false);    int k=0;    while(read())        cout<<"Case "<<++k<<": "<<solve()<<endl;    return 0;}


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 汽车轱辘被锁了怎么办 小车轮胎被锁了怎么办 国防光缆无明显标识被挖断怎么办 临工210挖掘机柴油进气怎么办 汽车抛光蜡干了怎么办 洗碗铁丝球吃了怎么办 牙套铁丝吃肚子怎么办 小铁丝吃到肚子怎么办 绿色抛光膏干了怎么办 不锈钢被盐酸弄黑了怎么办 不锈钢被草酸洗了怎么办 不锈钢洗菜盆被草酸腐蚀了怎么办 汽油发电机加了柴油怎么办 装载机发动机加入齿轮油怎么办 印尼的FromE错了怎么办 寄快递被弄坏了怎么办 福田口岸手表被扣怎么办? 网页显示与服务器连接失败怎么办 唯品会中发货无法清关怎么办 国际快递被海关扣了怎么办 我想开一家物流公司手续怎么办? 物流公司把我的货弄丢了怎么办 物流公司压司机工资怎么办 立元增压泵不出水怎么办 高浊度pac不沉怎么办 集水池中沉积大量污泥怎么办 电脑qq截图不好使怎么办 捡了个手机需要指纹怎么办 手机锁屏锁住了怎么办 三星屏锁忘记了怎么办 文字下面有蓝色直线怎么办 苹果x不能截屏了怎么办 u盘在电脑上打不开怎么办 电脑桌面上文档剪切了怎么办 苹果官网查不到保修日期怎么办 吃了发霉的花生怎么办 鸡吃大蒜多了怎么办 玖瑰花叶子黄怎么办 羊偷吃腥油和花生饼吃多了怎么办 肉牛眼睛有点变黄少吃东西怎么办 黑坑草鱼不开口怎么办