QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#579016#9319. Bull FarmwangwxWA 1ms5676kbC++142.8kb2024-09-21 01:25:112024-09-21 01:25:12

Judging History

你现在查看的是最新测评结果

  • [2024-09-21 01:25:12]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:5676kb
  • [2024-09-21 01:25:11]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int mxn=2e3+5,INF=0x3f3f3f3f;
int T,n,l,q;
int g[mxn][mxn],dis[mxn][mxn];
int t[mxn][mxn],in[mxn];
int vis[mxn][5];
void check(int x){
    int f2=0;
    for(int i=0;i<=n;i++) vis[i][0]=0;
    for(int i=1;i<=n;i++){
        vis[t[x][i]][++vis[t[x][i]][0]]=i;
        if(vis[t[x][i]][0]>3) return ;
        else if(vis[t[x][i]][0]==2) f2++;
    }
    if(f2>1) return;
    if(f2==1){
        int to,st;
        for(int i=1;i<=n;i++){
            if(vis[i][0]==2) st=i;
            else if(vis[i][0]==0) to=i;
        }
        if(g[vis[st][1]][to]==INF) g[vis[st][1]][to]=x;
        if(g[vis[st][2]][to]==INF) g[vis[st][2]][to]=x;
    }else{
         for(int i=1;i<=n;i++) if(g[i][t[x][i]]==INF) g[i][t[x][i]]=x;
        //  for(int i=1;i<=n;i++) g[i][t[x][i]]=min(g[i][t[x][i]],x);
    }
}


// bool check(int x){
//     for(int i=0;i<=n;i++) vis[i]=0;
//     for(int i=1;i<=n;i++){
//         vis[t[x][i]]++;
//     }
//     int f2=0;
//     for(int i=1;i<=n;i++){
//         if(vis[i]==2) f2++;
//         else if(vis[i]>2) f2+=2;
//     }
//     if(f2>1) return false;
//     int to=0,st=0;
//     if(f2==1){
//         for(int i=1;i<=n;i++){
//             if(vis[i]==2) f2=i;
//             else if(vis[i]==0) to=i;
//         }
//         for(int i=1;i<=n;i++){
//             if(t[x][i]==f2) g[i][to]=min(g[i][to],x);
//         }
//     }else{
//         for(int i=1;i<=n;i++) g[i][t[x][i]]=min(g[i][t[x][i]],x);
//     }
//     return true;
// }
void floyd(){
    for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) g[i][j]=INF;
    for(int i=1;i<=n;i++) check(i);
    for(int i=1;i<=n;i++) g[i][i]=0;

    for(int i=1;i<=n;i++){
        for(int x=1;x<=n;x++){
            if(x==i || g[x][i]==INF) continue;
            for(int y=1;y<=n;y++){
                if(y==x || y==i || g[i][y]==INF) continue;
                g[x][y]=min(max(g[x][i],g[i][y]),g[x][y]);
            }
        }
    }
    // cout<<g[1][2]<<"\n";
    // for(int i=1;i<=n;i++) g[i][i]=0;
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>T;
    while(T--){
        cin>>n>>l>>q;
        string s;
        for(int i=1;i<=l;i++){
            cin>>s;
            for(int j=1;j<=n;j++){
                t[i][j]=(s[(j-1)*2]-'0')*50+s[(j-1)*2+1]-'0';
                // cout<<t[i][j]<<(j==n?"\n":" ");
            }
        }
        floyd();
        for(int i=1;i<=q;i++){
            cin>>s;
            int a=(s[0]-'0')*50+s[1]-'0';
            int b=(s[2]-'0')*50+s[3]-'0';
            int c=(s[4]-'0')*50+s[5]-'0';
            int f;
            // cout<<a<<' '<<b<<' '<<c<<"\n";
            if(g[a][b]<=c) f=1; 
            else f=0;
            cout<<f;
        }
        cout<<"\n";
    }

}
// ?;;=EL

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5592kb

input:

2
5 2 4
0305040201
0404040404
030300
020500
050102
020501
6 2 4
030603010601
010203060504
030202
060402
050602
060401

output:

1011
0100

result:

ok 2 lines

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 5676kb

input:

1
3 3 6
020202
030301
030201
020102
030203
010201
010303
020303
010202

output:

010111

result:

wrong answer 1st lines differ - expected: '010101', found: '010111'