您的位置:首页 > 其它

poj 1364 KING (差分约束系统)

2011-06-12 19:16 477 查看
前两天看了算法导论 这方面的东西 刚刚在网上搜了一道这方面的题 自己就是懒 懒得思考 懒得调试

或许不是经过那次打击自己真的认识不到这一点  独立思考的重要性,不过现在惰性又来了 ,还是要牢骚牢骚

以后不应该这样了,每次wa了之后 就想拿别人的代码对比一下 看错在哪里 没有独自分析问题的能力,到

了实战的时候 WA一次 自己就没辙了....

总之 刚刚还想怎么判断零环 呢   实际上不用判断 因为都是整数 a-b>c 那么肯定有a-b>=c+1 , a-b<c 那么 a-b<=c-1  ; 

刚开始想当然...直接把 c+1的值取负  ,以为就是<的情况  结果....

#include<string>
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

int n_node;int n_edge;
#define N 104
struct Node
{
int  l,r;
int val;
};
Node node
;
#define INF  999999
int k;
string str;
int  bellman_ford();
int main()
{
freopen("in.txt","r",stdin);
int x,y;
while(cin>>n_node)
{
k=0;
if(n_node==0)  break;
n_node+=1;
cin>>n_edge;
int tmp;
for(int i=0;i<n_edge;i++)
{
cin>>x>>y>>str>>tmp;
node[k].l=x-1;
node[k].r=x+y;
node[k].val=tmp-1;
if(str[0]=='g')
{
int tt; tt=node[k].l; node[k].l=node[k].r;node[k].r=tt;
node[k].val=-tmp-1;
}
k++;
}
if(bellman_ford())
cout<<"lamentable kingdom"<<endl;
else cout<<"successful conspiracy"<<endl;
}

}

int  bellman_ford()
{
int d
;
for(int i=0;i<N;i++)
d[i]=INF;
d[0]=0;
int x,y; int done=0;
for(int i=0;i<n_node;i++)
{
done=0;
for(int j=0;j<k;j++)
{
x=node[j].l; y=node[j].r;
if(d[y]>d[x]+node[j].val)
{
done=1;  d[y]=d[x]+node[j].val;
}
}
}
if(done==1)
return 0;
else return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct 算法 ini c