답안 #429519

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
429519 2021-06-16T05:11:36 Z 조영욱(#7653) Brackets (CPSPC17_brackets) C++17
0 / 100
700 ms 1100 KB
#include <bits/stdc++.h>
using namespace std;

char str[8]={'(','{','[','<','>',']','}',')'};
bool vis[200][200];
long long dist[200][200];
long long dist2[200][200];
int arr[200][200];
int n,m;
const long long INF=2e18;

int main(void) {
    int s,t;
    scanf("%d %d %d %d",&n,&m,&s,&t);
    s--;
    t--;
    memset(arr,-1,sizeof(arr));
    for(int i=0;i<m;i++) {
        int u,v;
        char c;
        scanf("%d %d %c",&u,&v,&c);
        u--;
        v--;
        int val=-1;
        for(int j=0;j<8;j++) {
            if (str[j]==c){
                val=j;
                break;
            }
        }
        arr[u][v]=val;
    }
    for(int i=0;i<n;i++) {
        for(int j=0;j<n;j++) {
            if (i==j) {
                dist[i][j]=0;
            }
            else {
                dist[i][j]=INF;
            }
        }
    }
    for(int ind=0;ind<n*n;ind++) {
        int xpos=0;
        int ypos=0;
        for(int i=0;i<n;i++) {
            for(int j=0;j<n;j++) {
                dist2[i][j]=dist[i][j];
                if (!vis[i][j]) {
                    if (vis[xpos][ypos]||dist[i][j]<dist[xpos][ypos]) {
                        xpos=i;
                        ypos=j;
                    }
                }
            }
        }
        for(int i=0;i<n;i++) {
            for(int j=0;j<n;j++) {
                if (arr[i][xpos]+arr[ypos][j]==7&&arr[i][xpos]<arr[ypos][j]) {
                    dist[i][j]=min(dist[i][j],dist2[xpos][ypos]+2);
                }
            }
        }
        for(int i=0;i<n;i++) {
            dist[xpos][i]=min(dist[xpos][i],dist2[xpos][ypos]+dist2[ypos][i]);
            dist[i][ypos]=min(dist[i][ypos],dist2[i][xpos]+dist2[xpos][ypos]);
        }
        vis[xpos][ypos]=true;
    }
    printf("%lld\n",dist[s][t]>INF/2?-1:dist[s][t]);
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |     scanf("%d %d %d %d",&n,&m,&s,&t);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         scanf("%d %d %c",&u,&v,&c);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 460 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 460 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 460 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 460 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1095 ms 1100 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 460 KB Output isn't correct
2 Halted 0 ms 0 KB -