poj 1364

http://poj.org/problem?id=1364

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 #define maxn 51000
 6 using namespace std;
 7 
 8 const int inf=1<<23;
 9 struct node
10 {
11     int u,v,c;
12     node(){}
13     node(int u,int v,int c):u(u),v(v),c(c){}
14 }p[maxn];
15 int head[maxn],next[maxn],cnt[maxn];
16 bool vis[maxn];
17 int e,n,m,top;
18 int dis[maxn];
19 
20 void addnode(int u,int v,int c)
21 {
22     p[e]=node(u,v,c);
23     next[e]=head[u];head[u]=e++;
24 }
25 
26 bool relax(int u,int v,int c)
27 {
28     if(dis[v]>dis[u]+c)
29     {
30         dis[v]=dis[u]+c;
31         return true;
32     }
33     return false;
34 }
35 
36 void inti()
37 {
38     memset(head,-1,sizeof(head));
39     memset(next,-1,sizeof(next));
40     e=0;
41     top=-1;
42     for(int i=0; i<m; i++)
43     {
44         int a,b,c;
45         char s[3];
46         scanf("%d %d %s %d",&a,&b,s,&c);
47         if(!strcmp(s,"gt")){
48             addnode(a+b,a-1,(-c-1));
49         }
50         else if(!strcmp(s,"lt")){
51             addnode(a-1,a+b,c-1);
52         }
53     }
54 }
55 int a[maxn];
56 bool spfa()
57 {
58     int i;
59     memset(cnt,0,sizeof(cnt));
60     for(i=0; i<=n+1; i++) {dis[i]=inf;vis[i]=0;}
61     for(i=0; i<n; i++)
62     {
63         a[++top]=i;
64         vis[i]=true;
65     }
66     dis[0]=0;
67     while(top>-1)
68     {
69         int pre=a[top--];
70         vis[pre]=false;
71         for(int i=head[pre]; i!=-1; i=next[i])
72         {
73             if(relax(pre,p[i].v,p[i].c)&&!vis[p[i].v])
74             {
75                 if((++cnt[p[i].v])>(n)) return false;
76                 a[++top]=p[i].v;
77                 vis[p[i].v]=true;
78             }
79         }
80     }
81     return true;
82 }
83 
84 int main()
85 {
86    while(scanf("%d",&n)&&n)
87    {
88        scanf("%d",&m);
89        inti();
90        if(spfa()) printf("lamentable kingdom\n");
91        else printf("successful conspiracy\n");
92    }
93    return 0;
94 }
View Code

 

转载于:https://www.cnblogs.com/fanminghui/p/3439402.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值