int romanToInt(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int result = 0; for(int i=0; i<s.size(); i++){ // if current symbol is greater than its previous // the value for these two symbol is the second-first if(i>0 && c2n(s[i])>c2n(s[i-1])) result+=c2n(s[i])-2*c2n(s[i-1]); else result+=c2n(s[i]); } return result; }
main () { FILE *fin = fopen ("comehome.in", "r"); FILE *fout = fopen ("comehome.out", "w"); int an,ret; int i,j,k,t; char a,b; fscanf (fin, "%d\n", &an); for(i=0;i<an;i++){ fscanf (fin, "%c %c %d\n", &a,&b,&t); if(!adj[c2n(a)][c2n(b)]||adj[c2n(a)][c2n(b)]>t){ adj[c2n(a)][c2n(b)]=t; adj[c2n(b)][c2n(a)]=t; } } for(k=0;k<xn*2-1;k++){ for(i=0;i<xn*2;i++){ for(j=0;j<xn*2;j++){ if(i!=j&&adj[i][k]&&adj[j][k]&&(!adj[i][j]||adj[i][j]>adj[i][k]+adj[j][k])) adj[i][j]=adj[i][k]+adj[j][k]; } } } t=0;ret=xn-1; for(i=xn;i<xn*2-1;i++){ if(adj[i][xn*2-1]&&(!t||t>adj[i][xn*2-1])){ ret=i-xn; t=adj[i][xn*2-1]; } } fprintf (fout, "%c %d\n",(char)(ret+'A'),t); exit (0); }
_n2clookup() { for(int j = 0; j < VS_COUNTS; ++j) { t[c2n((uint64_t) j)] = (unsigned char) j; } }