2 条题解
-
0
#include<bits/stdc++.h> using namespace std; struct node{int x,y,c,next;}a[1100];int len,last[1100]; void ins(int x,int y,int c){len++;a[len]=node{x,y,c,last[x]};last[x]=len;} int rd[1100],d[1100]; int main() { int n,m;scanf("%d%d",&n,&m); memset(rd,0,sizeof(rd)); len=0;memset(last,0,sizeof(last)); for(int i=1;i<=m;i++) { int x,y,c;scanf("%d%d%d",&x,&y,&c); ins(x,y,c);rd[y]++; } memset(d,0,sizeof(d)); queue<int>Q; for(int i=1;i<=n;i++)if(rd[i]==0)Q.push(i),rd[i]=-1; while(!Q.empty()) { int x=Q.front(); for(int k=last[x];k>0;k=a[k].next) { int y=a[k].y; if(d[y]<d[x]+a[k].c)d[y]=d[x]+a[k].c; rd[y]--; if(rd[y]==0)Q.push(y),rd[y]=-1; } Q.pop(); } int ans=0;for(int i=1;i<=n;i++)ans=max(ans,d[i]); printf("%d\n",ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; struct node{int x,y,c,next;}a[1100];int len,last[1100]; void ins(int x,int y,int c){len++;a[len]=node{x,y,c,last[x]};last[x]=len;} int rd[1100],d[1100]; int main() { int n,m;scanf("%d%d",&n,&m); memset(rd,0,sizeof(rd)); len=0;memset(last,0,sizeof(last)); for(int i=1;i<=m;i++) { int x,y,c;scanf("%d%d%d",&x,&y,&c); ins(x,y,c);rd[y]++; } memset(d,0,sizeof(d)); queue<int>Q; for(int i=1;i<=n;i++)if(rd[i]==0)Q.push(i),rd[i]=-1; while(!Q.empty()) { int x=Q.front(); for(int k=last[x];k>0;k=a[k].next) { int y=a[k].y; if(d[y]<d[x]+a[k].c)d[y]=d[x]+a[k].c; rd[y]--; if(rd[y]==0)Q.push(y),rd[y]=-1; } Q.pop(); } int ans=0;for(int i=1;i<=n;i++)ans=max(ans,d[i]); printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 452
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 62
- 已通过
- 30
- 上传者