[관건 경로] 프로젝트 (project)
9293 단어 project
중요 한 경 로 를 구하 고 없어 졌어 요.
1 # include<cstdio>
2 # include<cstring>
3 const int maxn=100005;
4 int head,tail,n,m;
5 int pre[maxn],vis[maxn],v[maxn],fist[maxn],num[maxn],next[maxn],u[maxn],dis[maxn];
6 void init(){
7 memset(fist,-1,sizeof(fist));
8 int e=1,a,b;
9 scanf("%d%d",&n,&m);
10 for(int i=1;i<=n;i++)scanf("%d",&num[i]);
11 for(int i=1;i<=m;i++){
12 scanf("%d%d",&a,&b);
13 pre[b]++;
14 u[e]=a,v[e]=b;
15 next[e]=fist[u[e]];
16 fist[u[e]]=e++;
17 }
18 // for(int i=1;i<=n;i++)printf("%d ",fist[i]);printf("
");
19 // for(int i=1;i<=n;i++)printf("%d ",next[i]);printf("
");
20 // for(int i=1;i<=n;i++)printf("%d ",pre[i]);printf("
");
21 }
22 void work(int id){
23 if(num[id]>dis[id])dis[id]=num[id];
24 for(int i=fist[id];i!=-1;i=next[i]){
25 pre[v[i]]--;
26 if(pre[v[i]]==0)vis[tail++]=v[i];
27 if(dis[id]+num[v[i]]>dis[v[i]])
28 dis[v[i]]=dis[id]+num[v[i]];
29 }
30 }
31 void solve(){
32 int t=0;
33 for(int i=1;i<=n;i++)if(pre[i]==0)vis[t++]=i;//for(int i=0;i<t;i++)printf("%d ",vis[i]);
34 head=0,tail=t;
35 while(head<tail){
36 work(vis[head]);
37 head++;
38 }
39
40 }
41 void print(){
42 int max=-1;
43 for(int i=1;i<=n;i++)
44 if(dis[i]>max)max=dis[i];
45 printf("%d",max);
46 }
47 int main(){
48 freopen("project.in","r",stdin);
49 freopen("project.out","w",stdout);
50 init();
51 solve();
52 print();
53 return 0;
54 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Personal analysis of the Daily project on GitHubAnalysis of other people's projects on github. Learn from him well. https://github.com/spring2613/Daily The project has ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.