这道题不是top排序么
查看原帖
这道题不是top排序么
314
赠君问楼主2013/7/12 21:31

就错了第三个测试点

6 8 1 0 1 0 1 100 0 1 0 -2 0 0 1 4 1 2 4 0 3 4 -1 1 5 1 2 5 -1 3 5 -1 4 6 1 5 6 1 正确答案:6 1

我的答案:NULL

求大神帮助啊!!!

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node
{
    int to,w,next;
}edg[203];
int head[103],C[103],U[103],ru[103],ans[103],L=1;
queue<int>q;
void add(int u,int v,int h)
{
    edg[L].to=v;
    edg[L].w=h;
    edg[L].next=head[u];
    head[u]=L++;
}
int main()
{
    int n,m,u,v,h,k=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        q.push(i);
        cin>>C[i]>>U[i];
        if(C[i])    U[i]=0;
    }
    for(int i=0;i<m;i++)
    {
        cin>>u>>v>>h;
        add(u,v,h),ru[v]++;
    }
    while(!q.empty())
    {
        int x=q.front();
        q.pop();
        if(ru[x])    q.push(x);
        else
        {
            C[x]-=U[x];
            if(!head[x])    ans[k++]=x;
            else
                for(int i=head[x];i>0;i=edg[i].next)
                    C[edg[i].to]+=C[x]*edg[i].w,ru[edg[i].to]--;
        }
    }
    bool flag=false;
    sort(ans,ans+k);
    for(int i=0;i<k;i++)
        if(C[ans[i]]>0)
        {
            flag=true;
            cout<<ans[i]<<" "<<C[ans[i]]<<endl;
        }
    if(!flag)    cout<<"NULL"<<endl;
    return 0;
}
2013/7/12 21:31
加载中...