Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

先dfs拓排,再看拓排关系 是否每两个相邻的 都有边连,为什么WA呢?

Posted by lizeliang at 2009-09-19 19:56:42 on Problem 1094
#include<iostream>
#include<cstdio>
using namespace std;

int v,e,seqi,ei;
bool end;
int from[2000000],to[2000000];
int map[30][30],seq[30],mark[30];

bool init()
{
    char t,q;
    ei=0;
    end=false;
    memset(map,0,sizeof(map));
    for(int i=0;i<e;i++)
    {
        cin>>t>>q>>q;
        from[ei]=t-'A';
        to[ei]=q-'A';
        ei++;
    }
    return true;
}
bool dfs(int pos)
{
    if(mark[pos]==1)
    {
        end=true;
        return end;
    }
    else if(mark[pos]==0)
    {
        mark[pos]=1;
        for(int i=0;i<v;i++)
            if(map[pos][i] && mark[i]!=-1)
                if(dfs(i))
                    break;
    }
    mark[pos]=-1;
    seqi--;
    seq[seqi]=pos;
    return end;
}
void test_seq(int t)
{
    int i;
    for(i=0;i<v-1;i++)
        if(!map[i][i+1])
            break;
    if(i==v-1)
    {
        end=true;
        printf("Sorted sequence determined after ");
        printf("%d relations: ",t+1);
        for(int j=0;j<v;j++)
            printf("%c",(char)(seq[j]+'A'));
        printf(".\n");
    }
}
void toposort(int t)
{
    int i;
    seqi=v;
    memset(mark,0,sizeof(mark));
    for(i=0;i<v;i++)
        if(mark[i]==0)
            if(dfs(i))
                break;
    if(i<v)
    {
        printf("Inconsistency found after %d relations.\n",t+1);
        return ;
    }
    test_seq(t);
}
void solve()
{
    int i;
    for(i=0;i<ei && !end;i++)
    {
        map[from[i]][to[i]]=1;
        toposort(i);
    }
    if(!end)
        printf("Sorted sequence cannot be determined.\n");
}
int main()
{
    while(scanf("%d%d",&v,&e),v)
    {
        init();
        solve();
    }
    system("pause");
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator