컴파일 에러...

  • kjunking2002
    kjunking2002

    visual 에서는 잘 되는데...
    서브밋 올리면 컴파일 에러라고 뜨는데...뭔가 잘못된건가요ㅠㅠ
    vector랑 pair를 처음 써본거긴 하지만....
    봐주실수 있는분 봐주세요ㅠㅠ


    #include
    #include
    #include
    #include
    #define MAX 2005
    using namespace std;

    FILE *fin = stdin;
    FILE *fout = stdout;

    int N;
    int List[MAX],Visit[MAX];
    int List_cnt;
    int Ans;

    struct GROUP{
    int node[MAX];
    int node_cnt,in;
    };
    GROUP Group[MAX];
    int Group_cnt;

    vector> Line[MAX];

    struct DATA{
    int x,y;
    int num;
    double sx,sy;
    double ex,ey;
    };
    DATA Data[MAX];

    void Input()
    {
    int i,d;

    fscanf(fin,"%d",&N);
    
    for(i=1;i<=N;i++){
        fscanf(fin,"%d %d %d",&Data[i].x,&Data[i].y,&d);
        Data[i].sx=Data[i].x-double(d)/2;
        Data[i].ex=Data[i].x+double(d)/2;
        Data[i].sy=Data[i].y-double(d)/2;
        Data[i].ey=Data[i].y+double(d)/2;
    }

    }
    void Set_line()
    {
    int i,j;
    for(i=1;i<=N;i++){
    for(j=1;j<=N;j++){
    if(i==j) continue;
    if(Data[i].sx<=Data[j].x && Data[j].x<=Data[i].ex && Data[i].sy<=Data[j].y && Data[j].y<=Data[i].ey){
    Line[i].push_back(pair(j,0));
    Line[j].push_back(pair(i,1));
    }
    }
    }
    }
    void Dfs_1(int x)
    {
    int i;
    Visit[x]=1;
    for(i=0;i<(int)Line[x].size();i++){
    if(Line[x][i].second==1) continue;
    if(Visit[Line[x][i].first]==1) continue;
    Dfs_1(Line[x][i].first);
    }
    List[++List_cnt]=x;
    }
    void Dfs_2(int x)
    {
    int i,cnt;
    Visit[x]=1;
    Group[Group_cnt].node_cnt++;
    cnt=Group[Group_cnt].node_cnt;
    Group[Group_cnt].node[cnt]=x;
    Data[x].num=Group_cnt;
    for(i=0;i<(int)Line[x].size();i++){
    if(Line[x][i].second==0) continue;
    if(Visit[Line[x][i].first]==1) continue;
    Dfs_2(Line[x][i].first);
    }
    }
    void Sccc()
    {
    int i,j;

    for(i=1;i<=N;i++){
        if(Visit[i]==1) continue;
        Dfs_1(i);
    }
    memset(Visit,0,sizeof(Visit));
    for(i=N;i>=1;i--){
        if(Visit[List[i]]==1) continue;
        Group_cnt++;
        Dfs_2(List[i]);
    }
    for(i=1;i<=N;i++){
        for(j=0;j<(int)Line[i].size();j++){
            if(Line[i][j].second==1) continue;
            if(Data[i].num!=Data[Line[i][j].first].num) Group[Data[Line[i][j].first].num].in++;
        }
    }
    for(i=1;i<=Group_cnt;i++){
        if(Group[i].in==0) Ans++;
    }

    }
    void Process()
    {
    Set_line();
    Sccc();
    }
    void Output()
    {
    fprintf(fout,"%d\n",Ans);
    }
    int main()
    {
    int t,i,j;
    fscanf(fin,"%d",&t);
    for(i=1;i<=t;i++){
    Input();
    Process();
    Output();
    Ans=0;
    memset(List,0,sizeof(List));
    memset(Visit,0,sizeof(Visit));
    memset(Group,0,sizeof(Group));
    memset(Data,0,sizeof(Data));
    List_cnt=0;
    Group_cnt=0;
    for(j=1;j<=N;j++) Line[j].clear();
    }
    return 0;
    }


    13년 전
3개의 댓글이 있습니다.
  • MiNu
    MiNu

    소스가 깨져서 알아볼 수가 없네요ㅠ

    추측해 보건데 vector, pair 관련 컴파일 에러라면...
    vector<pair<int,int>> 선언 하실 때 오류가 난 건 아닌가 싶습니다.
    VC에서는 저렇게 해도 괜찮은데 타 컴파일러에서는 >> 부분은 operator로 봐서 컴파일 에러가 나더라구요..
    혹시 이 경우라면 vector< pair<int,int> > 로 한칸 띄고 하시면 괜찮습니다.


    13년 전 link
  • kjunking2002
    kjunking2002

    아.. 고치니깐 바로 AC뜨내요ㅠㅠ 감사합니다!!


    13년 전 link
  • 뭘 봐?
    뭘 봐?

    class_template1<class_template2<typename_or_integral> > 으로 구분을 강제하는 것이 표준 C++ 문법입니다. 최근 몇 년간의 릴리즈에 걸쳐 Visual C++ 컴파일러는 아직 논의가 진행 중인 새 표준 (소위 C++0x) 문법 및 라이브러리를 일부 사용하도록 했는데, >의 구문 분석 규칙 변화도 그 중 하나입니다.

    http://en.wikipedia.org/wiki/C%2B%2B0x#Right_angle_bracket


    13년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.