poj1135Domino Effect——最短路

题目:http://poj.org/problem?id=1135

先在图中跑一遍最短路,最后倒的牌可能是dis值最大的点,也可能是在dis值最大的点所连的边上,尝试一下即可;

坑:n=1的时候输出点1。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
queue<int>q;
int n,m,head[505],ct,dis[505],t;
double ans;
bool in[505];
struct N{
    int to,next,w;
    N(int t=0,int n=0,int o=0):to(t),next(n),w(o) {}
}edge[250005];
int main()
{
    while(scanf("%d%d",&n,&m)==2)
    {
        t++;
        if(!n&&!m)return 0;
        ct=0;
        memset(head,0,sizeof head);
        memset(dis,2,sizeof dis);
        memset(in,0,sizeof in);
        for(int i=1;i<=m;i++)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            edge[++ct]=N(y,head[x],z);head[x]=ct;
            edge[++ct]=N(x,head[y],z);head[y]=ct;
        }
        while(q.size())q.pop();
        dis[1]=0;q.push(1);in[1]=1;
        while(q.size())
        {
            int x=q.front();q.pop();
            in[x]=0;
            for(int i=head[x];i;i=edge[i].next)
            {
                int u=edge[i].to;
                if(dis[x]+edge[i].w<dis[u])
                {
                    dis[u]=dis[x]+edge[i].w;
                    if(!in[u])in[u]=1,q.push(u);
                }
            }
        }
        int k=0,dk=0;ans=0;
        for(int i=1;i<=n;i++)
            if(dis[i]>=ans)//>=以处理n=1的情况
            {
                ans=dis[i];
                k=i;
            }
        for(int i=head[k];i;i=edge[i].next)
        {
            int u=edge[i].to;
            if(dis[u]+edge[i].w>dis[k]&&ans<1.0*(edge[i].w-dis[k]+dis[u])/2+dis[k])
                ans=1.0*(edge[i].w-dis[k]+dis[u])/2+dis[k],dk=u;
        }
        printf("System #%d \n",t);
        if(dk>k)swap(dk,k);
        if(ans==dis[k])
            printf("The last domino falls after %.1lf seconds, at key domino %d.\n",ans,k);
        else
            printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n",ans,dk,k);
        printf("\n");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/Zinn/p/8611470.html

时间: 2024-11-03 20:27:20

poj1135Domino Effect——最短路的相关文章

POJ1135_Domino Effect(最短路)

Domino Effect Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8224   Accepted: 2068 Description Did you know that you can use domino bones for other things besides playing Dominoes? Take a number of dominoes and build a row by standing t

POJ 1135 Domino Effect(最短路 多米诺骨牌)

题意 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推 倒第 1张骨牌,会使其他骨牌连续地倒下(这就是短语"多米诺效应"的由来). 然而当骨牌数量很少时,这种玩法就没多大意思了,所以一些人在 80 年代早期开创了另一个 极端的多米诺骨牌游戏:用上百万张不同颜色.不同材料的骨牌拼成一幅复杂的图案.他们开创 了一种流行的艺术.在这种骨牌游戏中,通常有多行骨牌同时

题单二:图论500

http://wenku.baidu.com/link?url=gETLFsWcgddEDRZ334EJOS7qCTab94qw5cor8Es0LINVaGMSgc9nIV-utRIDh--2UwRLvsvJ5tXFjbdpzbjygEdpGehim1i5BfzYgYWxJmu ==========  以下是最小生成树+并查集=========================[HDU]1213         How Many Tables        基础并查集★1272         小

图论五百题!

生死看淡不服就淦,这才是人生! =============================以下是最小生成树+并查集======================================[HDU]1213 How Many Tables 基础并查集★1272 小希的迷宫 基础并查集★1325&&poj1308 Is It A Tree? 基础并查集★1856 More is better 基础并查集★1102 Constructing Roads 基础最小生成树★1232 畅通工程 基

图论 500题——主要为hdu/poj/zoj

转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并查集======================================[HDU]1213   How Many Tables   基础并查集★1272   小希的迷宫   基础并查集★1325&&poj1308  Is It A Tree?   基础并查集★1856   More i

图论精炼500题

忘了从哪转的了... =============================以下是最小生成树+并查集====================================== [HDU] 1213               How Many Tables                    基础并查集★ 1272               小希的迷宫                     基础并查集★ 1325&&poj1308    Is It A Tree?       

图论常用算法之一 POJ图论题集【转载】

POJ图论分类[转] 一个很不错的图论分类,非常感谢原版的作者!!!在这里分享给大家,爱好图论的ACMer不寂寞了... (很抱歉没有找到此题集整理的原创作者,感谢知情的朋友给个原创链接) POJ:http://poj.org/ 1062* 昂贵的聘礼 枚举等级限制+dijkstra 1087* A Plug for UNIX 2分匹配 1094 Sorting It All Out floyd 或 拓扑 1112* Team Them Up! 2分图染色+DP 1125 Stockbroker

hdu图论题目分类

=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 基础并查集★ 1325&&poj1308 Is It A Tree? 基础并查集★ 1856 More is better 基础并查集★ 1102 Constructing Roads 基础最小生成树★ 1232 畅通工程 基础并查集★ 123

图论500题

=============================以下是最小生成树+并查集====================================== [HDU] 1213   How Many Tables   基础并查集★ 1272   小希的迷宫   基础并查集★ 1325&&poj1308  Is It A Tree?   基础并查集★ 1856   More is better   基础并查集★ 1102   Constructing Roads  基础最小生成树★ 12