HDU2037 BFS

题意:

给定一些节目单的时间,求最多能看完整的节目数。

把这些节目当成点,若下一个节目在上一个节目时间之后 则连上一条有向边 最后枚举起点求最长路。。。。

View Code
 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<queue>
 4 using namespace std;
 5 const int maxn = 105;
 6 const int maxm = 10005;
 7 const int inf = 99999999;
 8 struct node{
 9     int s,t;
10 };
11 node a[ maxn ];
12 struct node2{
13     int u,next;
14 }edge[ maxm ];
15 int cnt,head[ maxn ];
16 
17 void init(){
18     cnt=0;
19     memset( head,-1,sizeof( head ));
20 }
21 
22 void addedge( int a,int b ){
23     edge[ cnt ].u=b;
24     edge[ cnt ].next=head[ a ];
25     head[ a ]=cnt++;
26 }
27 
28 int dis[ maxn ],vis[ maxn ];
29 int spfa( int s,int n ){
30     //memset( vis,0,sizeof( vis ));
31     for( int i=0;i<n;i++ ){
32         dis[ i ]=1;
33         vis[ i ]=0;
34     }
35     queue<int>q;
36     q.push( s );
37     vis[ s ]=1;
38     dis[ s ]=1;
39     while( !q.empty() ){
40         int now=q.front();
41         q.pop();
42         vis[ now ]=0;
43         for( int i=head[ now ];i!=-1;i=edge[ i ].next ){
44             int nxt=edge[ i ].u;
45             if( dis[ nxt ]<dis[ now ]+1 ){
46                 dis[ nxt ]=dis[ now ]+1;
47                 if( vis[ nxt ]==0 ){
48                     vis[ nxt ]=1;
49                     q.push( nxt );
50                 }
51             }
52         }
53     }
54     int sum=dis[ s ];
55     for( int i=0;i<n;i++ )
56         sum=max( sum,dis[ i ]);
57     return sum;
58 }
59 
60 int main(){
61     int n;
62     while( scanf("%d",&n),n ){
63         for( int i=0;i<n;i++ ){
64             scanf("%d%d",&a[ i ].s,&a[ i ].t);
65         }
66         init();
67         for( int i=0;i<n;i++ ){
68             for( int j=0;j<n;j++ ){
69                 if( a[ j ].s>=a[ i ].t&&i!=j ){
70                     addedge( i,j );
71                 }
72             }
73         }
74         int ans=0;
75         for( int i=0;i<n;i++ )
76             ans=max( ans,spfa( i,n ) );
77         printf("%d\n",ans);
78     }
79     return 0;
80 }

 

posted @ 2013-03-16 16:56  xxx0624  阅读(225)  评论(0编辑  收藏  举报