http://poj.org/problem?id=1364
1 #include<stdio.h>
2 #include<string.h>
3 #define maxn 105
4 #define INF 999999999
5 typedef struct
6 {
7 int u,v,w;
8 }node;
9 node a[maxn];
10 int n,m,cnt;
11 int dist[maxn];
12 void add(int u,int v,int w)
13 {
14 a[cnt].u=u;
15 a[cnt].v=v;
16 a[cnt].w=w;
17 cnt++;
18 }
19 int bellman_ford()
20 {
21 for(int i=1;i<=n;i++)
22 dist[i]=INF;
23 dist[0]=0;
24 for(int i=1;i<=n;i++)
25 {
26 for(int j=0;j<cnt;j++)
27 if(dist[a[j].v]>dist[a[j].u]+a[j].w)
28 dist[a[j].v]=dist[a[j].u]+a[j].w;
29 }
30 for(int j=0;j<cnt;j++)
31 if(dist[a[j].v]>dist[a[j].u]+a[j].w)
32 return 0;
33 return 1;
34 }
35 int main()
36 {
37 while(scanf("%d",&n)!=EOF)
38 {
39 if(n==0) break;
40 scanf("%d",&m);
41 cnt=0;
42 while(m--)
43 {
44 int si,ni,ki;
45 char ch[2];
46 scanf("%d%d%s%d",&si,&ni,ch,&ki);
47 if(ch[0]=='g')
48 add(si+ni,si-1,-ki-1);
49 else
50 add(si-1,si+ni,ki-1);
51 }
52 if(bellman_ford())
53 printf("lamentable kingdom
");
54 else
55 printf("successful conspiracy
");
56 // for(int i=0;i<cnt;i++)
57 // printf("%d %d %d
",a[i].u,a[i].v,a[i].w);
58 }
59 return 0;
60 }