[±âº»°úÁ¤, 3´Ü°è]



3-1-1.n!-¼øÈ¯¾Ë°í¸®Áò

#include<stdio.h> int f(int p) { if(p==1) return 1; int u; u = p*f(p-1); return u; } int main() { int n,k; scanf("%d",&n); k=f(n); printf("k=%d\n",k); return 0; }

3-1-2.n!-ºñ¼øÈ¯¾Ë°í¸®Áò

#include<iostream> using namespace std; int s[1004]; int main() { int sp=0,n,nn; cin >> n; nn=n; while(1){ sp++; s[sp]=nn; if(nn==1)break; nn--; } while(1){ nn=s[sp]; sp--; s[sp]*=nn; if(sp==1)break; } cout << s[sp]; return 0; }

3-2-1.ÇǺ¸³ªÄ¡¼ö¿­-¼øÈ¯¾Ë°í¸®Áò

#include<stdio.h> int f(int p) { if(p==1 || p==2) return 1; return f(p-1)+f(p-2); } int main() { int n,k ; scanf("%d",&n); k=f(n); printf("%d\n",k); return 0; }

3-2-2.ÇǺ¸³ªÄ¡¼ö¿­-ºñ¼øÈ¯¾Ë°í¸®Áò

#include<iostream> using namespace std; int s[1004], d[1004]; int main() { int n,nn,sp=0,np; cin >> n; d[1]=1; d[2]=1; nn=n; while(1) { sp++; s[sp]=nn; if(d[nn]!=0)break; nn--; } while(1) { nn=s[sp]; sp--; if(sp==0)break; np=nn-1; d[s[sp]]=d[nn]+d[np]; } cout << d[nn]; return 0; }

3-3.2Áø¼ö ±¸Çϱâ-¼øÈ¯¾Ë°í¸®Áò

#include<stdio.h> int f(int p) { if(p==0) return 0; f(p/2); printf("%d",p%2); return 0; } int main() { int n; scanf("%d",&n); f(n); printf("\n"); return 0; }

3-4-1.2ÁøÆ®¸®-¼øÈ¯¾Ë°í¸®Áò

#include<stdio.h> int n; int f(int p) { if(p>n) return 0; f(p*2); printf("%d ",p); f(p*2+1); return 0; } int main() { scanf("%d",&n); f(1); printf("\n"); return 0; }

3-4-2.2ÁøÆ®¸®-ºñ¼øÈ¯¾Ë°í¸®Áò

2ÁøÆ®¸® ÀüÀ§ #include<iostream> using namespace std; int s[1004]; int main() { int n,sp=0,nl,nr; cin >> n; sp++; s[sp]=1; while(1){ cout << s[sp] << " "; nl=s[sp]*2; nr=s[sp]*2+1; sp--; if(nr<=n){sp++; s[sp]=nr;} if(nl<=n){sp++; s[sp]=nl;} if(sp==0)break; } cout << endl; return 0; } 2ÁøÆ®¸® ÁßÀ§ #include<iostream> #include<memory.h> using namespace std; int s[1004]; bool d[1004]; int main() { int n,sp=0,nl,nr; cin >> n; sp++; s[sp]=1; memset(d,0,sizeof(d)); while(1){ if(d[s[sp]]==0){ nl=s[sp]*2; d[s[sp]]=1; if(nl <= n){ sp++; s[sp]=nl; } }else{ cout << s[sp] << " "; nr=s[sp]*2+1; sp--; if(nr<=n){ sp++; s[sp]=nr; } } if(sp==0)break; } return 0; } 2ÁøÆ®¸® ÈÄÀ§ #include<iostream> using namespace std; int s[1004]; bool d[1004]; int main() { int n,sp=0,a,nl; cin >> n; sp++; s[sp]=1; while(1){ if(d[s[sp]]==0){ nl=s[sp]*2; d[s[sp]]=1; if(nl<=n){sp++; s[sp]=nl;} else { cout << s[sp] << " "; a=s[sp]; sp--; if(a%2==0){ if(a+1<=n){sp++; s[sp]=a+1;} } } } else { cout << s[sp] << " "; a=s[sp]; sp--; if(a%2==0){ if(a+1<=n){sp++; s[sp]=a+1;} } } if(sp==0)break; } return 0; }

3-4-3.2Áø Æ®¸® ±íÀÌ(Ư°­Ãß°¡)

(intput) 1 2 4 7 -1 -1 8 -1 -1 -1 3 5 -1 -1 6 -1 -1 (output) 4 1 3 4 #include<stdio.h> int count[3],ans; int dfs(int d) { int v,cnt=0; scanf("%d",&v); if(v==-1) return 0; if(ans < d) ans = d; cnt += dfs(d+1); cnt += dfs(d+1); ++count[cnt]; return 1; } int main() { dfs(1); for(int i=0; i<3; i++)printf("%d ",count[i]); printf("\n%d\n",ans); return 0; }

3-4-4.2Áø Æ®¸®-¼øÈ¯¾Ë°í¸®Áòk(Ư°­Ãß°¡)

(intput) 1 2 4 7 -1 -1 8 -1 -1 -1 3 5 -1 -1 6 -1 -1 (output) -1 7 -1 4 -1 8 -1 2 -1 1 -1 5 -1 3 -1 6 -1 -1 -1 7 -1 -1 8 4 -1 2 -1 -1 5 -1 -1 6 3 1 #include<stdio.h> int N, num[1004], left[1004], right[1004]; int dfs() { int v; scanf("%d", &v); if(v==-1) return 0; int n=++N, k; num[n]=v; if(k=dfs()) left[n]=k; if(k=dfs()) right[n]= k; return n; } int in(int n) { if(!n){printf("-1 ");return 0;} in(left[n]); printf("%d ",num[n]); in(right[n]); return 0; } int pos(int n) { if(!n){printf("-1 ");return 0;} pos(left[n]); pos(right[n]); printf("%d ",num[n]); return 0; } int main() { dfs(); in(1); puts(""); pos(1); puts(""); return 0; }

3-4-5. ¹«ÇÑ ÀÌÁø Æ®¸®(Ư°­Ãß°¡)

(intput) 17 73 (output) 4 6 #include<stdio.h> int L,R; int f(int a, int b) { if(a==1 && b == 1) return 0; if(a == 1){ R += b-1; return 0; } if(b==1){ L += a-1; return 0; } if(a > b){ L += a/b; f(a%b, b); } if(a < b){ R += b/a; f(a, b%a); } } int main() { int a,b; scanf("%d %d",&a, &b); f(a,b); printf("%d %d\n",L,R); return 0; }

3-5.ÇϳëÀÌž-¼øÈ¯¾Ë°í¸®Áò

#include<stdio.h> int f(int p, int s, int e) { int k; if(p<=0) return 0; k=6-(s+e); f(p-1,s,k); printf("%d %d %d\n",p,s,e); f(p-1,k,e); return 0; } int main() { int n; scanf("%d",&n); f(n,1,3); return 0; }

3-6-1. ºÎºÐ ÁýÇÕ(¼øÈ¯¾Ë°í¸®Áò)

#include<stdio.h> int n,d[100],z[100]; int f(int p, int s) { int i; if(p==n+1){ printf("{"); for(i=1; i<=n; i++){ if(z[i]==1) printf("%d ",d[i]); } printf("}=%d\n",s); return 0; } z[p]=0; f(p+1, s); z[p]=1; f(p+1, s+d[p]); return 0; } int main() { int i; scanf("%d",&n); for(i=1; i<=n; i++){ scanf("%d",&d[i]); } f(1,0); return 0; }

3-6-2. ºÎºÐ ÁýÇÕ(ºñ¼øÈ¯¾Ë°í¸®Áò, Ư°­Ãß°¡)

#include<stdio.h> int d[1004]; int z[1004][1004]; int main() { int n,i,j,c,cc,k; scanf("%d",&n); for(i=1; i<=n; i++)scanf("%d",&d[i]); z[1][1]=0; c=1; z[1][0]=1; for(i=1; i<=n; i++){ cc=c; for(j=1; j<=c; j++){ cc++; for(k=1; k<=z[j][0]; k++){ z[cc][k] =z[j][k]; } z[cc][k]=d[i]; z[cc][0]=k; } c=cc; } for(i=2; i<=cc; i++){ for(j=2; j<=z[i][0]; j++) printf("%d ",z[i][j]); printf("\n"); } return 0; }

3-7-1. ¹Ì·Î ã±â-dfs(¼øÈ¯)

#include<stdio.h> #include<stdlib.h> int d[101][101],n, dx[101], dy[101]; int f(int x, int y, int p) { int i; if(x==n && y==n){ dx[p]=x; dy[p]=y; for(i=1; i<=p; i++) printf("%d %d\n",dx[i], dy[i]); printf("ok!\n"); return 0; } if(d[x][y]==1){ dx[p]=x; dy[p]=y; d[x][y]=0; f(x-1, y, p+1); f(x, y-1, p+1); f(x+1, y, p+1); f(x, y+1, p+1); d[x][y]=1; } return 0; } int main() { int i,j; freopen("input.txt","r",stdin); scanf("%d",&n); for(i=1; i<=n; i++){ for(j=1; j<=n; j++){ scanf("%d",&d[i][j]); } } f(1,1,0); return 0; }

3-7-2. ¹Ì·Î ã±â-bfs(ºñ¼øÈ¯, Ư°­Ãß°¡)

#include<stdio.h> struct data{ int x,y,p; }; int z[1001][1001],px[1001], py[1001]; int main() { int i, j, n, sp=0, zx, zy, zp; struct data s[1004]; freopen("input.txt","r",stdin); scanf("%d",&n); for(i=1; i<=n; i++){ for(j=1; j<=n; j++){ scanf("%d",&z[i][j]); } } sp=1; s[sp].x=1; s[sp].y=1; s[sp].p=1; while(sp!=0){ zx=s[sp].x; zy=s[sp].y;zp=s[sp].p;sp--; z[zx][zy]=0; px[zp]=zx; py[zp]=zy; if(zx==n && zy==n) break; if(z[zx-1][zy]==1){sp++; s[sp].x=zx-1; s[sp].y=zy; s[sp].p=zp+1;} if(z[zx][zy-1]==1){sp++; s[sp].x=zx; s[sp].y=zy-1; s[sp].p=zp+1;} if(z[zx+1][zy]==1){sp++; s[sp].x=zx+1; s[sp].y=zy; s[sp].p=zp+1;} if(z[zx][zy+1]==1){sp++; s[sp].x=zx; s[sp].y=zy+1; s[sp].p=zp+1;} } for(i=1; i<=zp; i++) printf("%d %d\n",px[i],py[i]); return 0; }

3-8-1. Áߺ¹ ¼ø¿­-dfs

#include<stdio.h> int n,m,d[101]; int f(int p, int q) { int i,j; if(q>=m){ for(j=1; j<=m; j++)printf("%d ",d[j]); printf("\n"); return 0; } for(i=1; i<=n; i++){ d[q+1]=i; f(i,q+1); } return 0; } int main() { scanf("%d %d",&n, &m); f(0,0); return 0; }

3-8-2. Áߺ¹ ¼ø¿­(ºñ¼øÈ¯, Ư°­Ãß°¡)-bfs

#include<stdio.h> int a[100004], b[100004], c[100004], z[100],s[1004]; int main() { int n,m,f,t,ff,i; scanf("%d %ds",&n, &m); f=1; t=1; ff=0; while(1) { for(i=1; i<=n; i++){ a[++t]=i; b[t]=f; c[t]=c[f]+1; z[c[t]]=t; if(c[t]>m){ ff=1; break;} } f++; if(ff==1)break; } // for(i=1; i<t; i++) printf("%d %d %d\n",a[i], b[i], c[i]); int zz, sp, j, ii; zz=z[m-1]+1; for(i=zz; i<=z[m]; i++){ sp=0; ii=i; while(1) { sp++; s[sp]=a[ii]; ii=b[ii]; if(b[ii]==0) break; } for(j=sp; j>=1; j--)printf("%d",s[j]); printf("\n"); } return 0; }

3-9. ¼ø¿­-dfs

#include<stdio.h> int n,m,d[101],z[101]; int f(int p, int q) { int i,j; if(q>=m){ for(j=1; j<=m; j++)printf("%d ",d[j]); printf("\n"); return 0; } for(i=1; i<=n; i++){ if(z[i]==0){ z[i]=1; d[q+1]=i; f(i,q+1); z[i]=0; } } return 0; } int main() { scanf("%d %d",&n, &m); f(0,0); return 0; }

3-10. Á¶ÇÕ-dfs

#include<stdio.h> int n,m,d[101]; int f(int p, int q) { int i,j; if(q>=m){ for(j=1; j<=m; j++)printf("%d ",d[j]); printf("\n"); return 0; } for(i=p+1; i<=n; i++){ d[q+1]=i; f(i,q+1); } return 0; } int main() { scanf("%d %d",&n, &m); f(0,0); return 0; }

3-10-1. ¿ùµåÄÅ(2008³âµµ KOIÀü±¹º»¼± ÁßµîºÎ 1¹ø)(Ư°­Ãß°¡)

(1´Ü°è ¼Ò½º) #include<stdio.h> #include<conio.h> #define n 6 #define m 15 int w[n], l[n], d[n], gw[n], gl[n], gd[n]; int g[m], p1[m], p2[m]; bool ff; int recur( int cnt ) { int i, j; if (cnt == m){ for(j=0; j<n; j++){ printf("%d: %d %d %d\n",j, gw[j], gd[j], gl[j]); } printf("\n"); getch(); return 0; } gw[p1[cnt]++;gl[p2[cnt]++; recur(cnt+1); gw[p1[cnt]--;gl[p2[cnt]--; gd[p1[cnt]]++;gd[p2[cnt]]++; recur(cnt+1); gd[p1[cnt]]--;gd[p2[cnt]]--; gl[p1[cnt]]++;gw[p2[cnt]]++; recur(cnt+1); gl[p1[cnt]]--;gw[p2[cnt]]--; return 0; } int process() { int i, j, cnt = 0; for (i=0; i<n; i++){ gw[i] = 0; gl[i] = 0; gd[i] = 0; if (w[i]+l[i]+d[i] != n-1) return 0; } for (i=0; i<n; i++){ for (j=i+1; j<n; j++){ p1[cnt] = i; p2[cnt] = j; cnt++; } } recur(0); return 0; } int main() { freopen("input.txt","r",stdin); for (int i = 0; i<1; i++){ for (int j=0; j<n; j++) scanf("%d %d %d",&w[j], &d[j], &l[j]); process(); } return 0; } (2´Ü°è ¼Ò½º) #include<stdio.h> #include<conio.h> #define n 6 #define m 15 int w[n], l[n], d[n], gw[n], gl[n], gd[n]; int g[m], p1[m], p2[m]; bool ff; int recur( int cnt ) { if (cnt == m){ for(int j=0; j<n; j++){ printf("%d: %d %d %d\n",j, gw[j], gd[j], gl[j]); } printf("\n"); getch(); ff = 1; return 0; } int n1 = p1[cnt], n2 = p2[cnt]; gw[n1]++; gl[n2]++; if (gw[n1]<=w[n1] && gl[n2]<=l[n2]) recur(cnt+1); gw[n1]--; gl[n2]--; gd[n1]++; gd[n2]++; if (gd[n1]<=d[n1] && gd[n2]<=d[n2]) recur(cnt+1); gd[n1]--; gd[n2]--; gl[n1]++; gw[n2]++; if (gl[n1]<=l[n1] && gw[n2]<=w[n2]) recur(cnt+1); gl[n1]--; gw[n2]--; return 0; } int process() { int i, j, cnt = 0; ff = 0; for (i=0; i<n; i++){ gw[i] = 0; gl[i] = 0; gd[i] = 0; if (w[i]+l[i]+d[i] != n-1) return 0; } for (i=0; i<n; i++){ for (j=i+1; j<n; j++){ p1[cnt] = i; p2[cnt] = j; cnt++; } } recur(0); return 0; } int main() { freopen("input.txt","r",stdin); for (int i = 0; i<1; i++) { for (int j=0; j<n; j++) scanf("%d %d %d",&w[j], &d[j], &l[j]); process(); if (ff==1) printf("1 "); else printf("0 "); } return 0; }

3-10-2. Àå³­°¨ Á¶¸³(2000³âµµ KOIÀü±¹º»¼± ÁßµîºÎ 1¹ø)(Ư°­Ãß°¡)

(ÇÁ·Î±×·¥) #include<stdio.h> int a[101][101], b[101], c[101], n, m; void Go(int p, int v) { int q, i; b[p] += v; for(q=1; q<=n; q++){ if(a[p][q])Go(q, v * a[p][q]); } } int main(void) { int i, j, t1, t2; freopen("input.txt","r",stdin); scanf("%d %d",&n,&m); for(i=0;i<m;i++){ scanf("%d %d",&t1, &t2); c[t1] = 1; scanf("%d",&a[t1][t2]); } Go(n, 1); for(i=1;i<=n;i++){ if(c[i] == 0) printf("%d %d\n",i,b[i]); } return 0; }

3-10-3. ÄüÁ¤·Ä-1´Ü°è ºÐÇÒ Á¤º¹(Ư°­Ãß°¡)

(ÇÁ·Î±×·¥) #include<stdio.h> #include<time.h> #include<stdlib.h> int d[100]; int f(int s, int e) { int ss,ee,t; if(s>=e) return 0; while(1) { ss=s+1; ee=e; while(d[s]>=d[ss] && ss <= e)ss++; while(d[s]<=d[ee] && ee > s)ee--; if(ss>=ee)break; t=d[ss]; d[ss]=d[ee]; d[ee]=t; } t=d[s]; d[s]=d[ee];d[ee]=t; f(s, ee-1); f(ee+1, e); return 0; } int main() { int i,n; srand(time(0)); scanf("%d",&n); for(i=1; i<=n; i++){ d[i]=rand()%100; } for(i=1; i<=n; i++)printf("%d ",d[i]); printf("\n\n"); f(1,n); for(i=1; i<=n; i++)printf("%d ",d[i]); printf("\n"); return 0; }

3-10-4. »öÁ¾ÀÌ ¸¸µé±â-2´Ü°è ºÐÇÒ Á¤º¹(Ư°­Ãß°¡)
(2001³âµµ KOIÀü±¹º»¼± ÁßµîºÎ 1¹ø)

(ÇÁ·Î±×·¥) #include<stdio.h> int a[200][200]; int blue, white; int f(int x, int y, int p) { int b=0, w=0,i,j; for (i=x;i<x+p;i++){ for (j=y;j<y+p;j++){ if (a[i][j]==1) b++; else w++; } } if (b==0) {white++; return 0;} if (w==0) {blue++; return 0;} f(x, y, p/2); f(x, y+p/2, p/2); f(x+p/2, y, p/2); f(x+p/2, y+p/2, p/2); return 0; } int main() { int n,i,j; scanf("%d",&n); for (i=0;i<n;i++){ for (j=0;j<n;j++){ scanf("%d",&a[i][j]); } } f(0,0,n); printf("%d\n", white); printf("%d\n", blue); return 0; }

3-10-5. ¿©¿Õ¹®Á¦(Ư°­Ãß°¡)

(ÇÁ·Î±×·¥) #include<stdio.h> int qq[100]; int n; int bound(int pp) { int i; for(i=1; i<pp; i++){ if(qq[pp] == qq[i]) return 0; if(pp+qq[pp] == i+qq[i]) return 0; if(pp-qq[pp] == i-qq[i]) return 0; } return 1; } int q(int p) { int i, k; if(p>n){ for(k=1; k<=n; k++) printf("(%d %d)", k, qq[k]); printf("\n"); return 0; } for(i=1; i<=n; i++){ qq[p]=i; if(bound(p)) q(p+1); } return 0; } int main() { scanf("%d", &n); q(1); return 0; }

3-11-1. ¸ðµç½ÖÀÇ Ãִܰæ·Î(Ư°­Ãß°¡, ¼øÈ¯)

(input) 6 4 0 1 50 0 2 10 2 1 20 1 2 15 2 3 15 3 1 20 (output) 0 2 3 1 45 0 2 10 0 2 3 25 1 2 0 35 12 15 1 2 3 30 2 0 20 2 3 1 35 2 3 15 3 1 2 0 55 3 1 20 3 1 2 35 (1´Ü°è) #include<stdio.h> int d[1004][1004]; int n,k; int main() { int a,b,c,i,j; freopen("input.txt","r",stdin); scanf("%d %d",&n, &k); for(i=1; i<=n; i++){ scanf("%d %d %d",&a, &b, &c); d[a][b]=c; } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%3d",d[i][j]); printf("\n"); } return 0; } (2´Ü°è) #include<stdio.h> int d[1004][1004]; int n,k; int main() { int a,b,c,i,j; freopen("input.txt","r",stdin); scanf("%d %d",&n, &k); for(i=0; i<k; i++){ for(j=0; j<k; j++)d[i][j]=99999; d[i][i]=0; } for(i=1; i<=n; i++){ scanf("%d %d %d",&a, &b, &c); d[a][b]=c; } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%6d",d[i][j]); printf("\n"); } return 0; } (3´Ü°è) #include<stdio.h> #include<conio.h> int d[1004][1004],z[1004]; int n,k, g; int f(int p, int q, int r) { int i,j; if(q>=k || (q>0 && g==p)){ z[q]=p; for(j=0; j<=q; j++) printf("%d ",z[j]); printf("=>%d\n",r); getch(); return 0; } for(i=0; i<=k; i++){ if(p!=i && d[p][i] != 99999){ z[q]=p; f(i, q+1, r+d[p][i]); z[q]=0; } } return 0; } int main() { int a,b,c,i,j; freopen("input.txt","r",stdin); scanf("%d %d",&n, &k); for(i=0; i<k; i++){ for(j=0; j<k; j++)d[i][j]=99999; d[i][i]=0; } for(i=1; i<=n; i++){ scanf("%d %d %d",&a, &b, &c); d[a][b]=c; } for(i=0; i<k; i++){ g=i; f(i,0,0); } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%6d",d[i][j]); printf("\n"); } return 0; } (4´Ü°è) #include<stdio.h> #include<conio.h> int d[1004][1004],z[1004]; int n,k, g; int f(int p, int q, int r) { int i,j,rr; if(q>=k || (q>0 && g==p)){ z[q]=p; for(j=0; j<=q; j++) printf("%d ",z[j]); printf("=>%d\n",r); return 0; } for(i=0; i<k; i++){ if(p==i)continue; rr=r+d[p][i]; if((rr!=0) && (rr < d[g][i]))d[g][i]=rr; if(d[p][i] != 99999){ z[q]=p; f(i, q+1, rr); } } return 0; } int main() { int a,b,c,i,j; freopen("input.txt","r",stdin); scanf("%d %d",&n, &k); for(i=0; i<k; i++){ for(j=0; j<k; j++)d[i][j]=99999; d[i][i]=0; } for(i=1; i<=n; i++){ scanf("%d %d %d",&a, &b, &c); d[a][b]=c; } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%6d",d[i][j]); printf("\n\n"); } for(i=0; i<k; i++){ g=i; f(i,0,0); } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%6d",d[i][j]); printf("\n"); } return 0; } (5´Ü°è) #include<stdio.h> #include<conio.h> int d[1004][1004],z[1004],m[1004]; int n,k, g; int f(int p, int q, int r) { int i,j,rr; if(q>=k || (q>0 && g==p)){ z[q]=p; for(j=0; j<=q; j++) printf("%d ",z[j]); printf("=>%d\n",r); return 0; } for(i=0; i<k; i++){ if(p==i)continue; if(m[i]==1)continue; rr=r+d[p][i]; if((rr!=0) && (rr < d[g][i]))d[g][i]=rr; if(d[p][i] != 99999){ z[q]=p;m[i]=1; f(i, q+1, rr); m[i]=0; } } return 0; } int main() { int a,b,c,i,j; freopen("input.txt","r",stdin); scanf("%d %d",&n, &k); for(i=0; i<k; i++){ for(j=0; j<k; j++)d[i][j]=99999; d[i][i]=0; } for(i=1; i<=n; i++){ scanf("%d %d %d",&a, &b, &c); d[a][b]=c; } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%6d",d[i][j]); printf("\n\n"); } for(i=0; i<k; i++){ g=i;m[g]=1; f(i,0,0); m[g]=0; } for(i=0; i<k; i++){ for(j=0; j<k; j++) printf("%6d",d[i][j]); printf("\n"); } return 0; } * ÀÌ ÇÁ·Î±×·¥Àº È®½ÇÇÑ ¿À·ù°¡ ÀÖ½À´Ï´Ù. ã¾Æº¸¼¼¿ä!

3-11-2. ¸ðµç½ÖÀÇ Ãִܰæ·Î(Ư°­Ãß°¡, ºñ¼øÈ¯)

#include<stdio.h> int d[1001][1001], v[1001][1001]; int n; int print_v(int i, int j) { int k; k = v[i][j]; if(v[i][k] != -1)print_v(i,k); printf("%d ",k); return -1; } int output() { int i,j; for(i=0; i<n; i++){ for(j=0; j<n; j++){ if(i!=j && d[i][j] !=99999){ printf("%d ",i); if(v[i][j] !=-1) print_v(i,j); printf("%d (%d)\n",j,d[i][j]); } else if(d[i][j]==99999)printf("%d %d impossible",i,j); } printf("\n"); } return 0; } int main() { int k,a,b,c,i,j,p; freopen("input.txt","r",stdin); scanf("%d %d",&n, &k); for(i=0; i<n; i++){ for(j=0; j<n; j++){ if(i!=j)d[i][j]=99999; v[i][j]=-1; } } for(i=0; i<k; i++){ scanf("%d %d %d",&a,&b,&c); d[a][b]=c; } for(p=0; p<n; p++){ for(i=0; i<n; i++){ if(p == i)continue; for(j=0; j<n; j++){ if(d[i][p]+d[p][j] < d[i][j]){ d[i][j]=d[i][p]+d[p][j]; v[i][j]=p; } } } } for(i=0; i<n; i++){ for(j=0; j<n; j++){ printf("%6d", d[i][j]); } printf("\n"); } printf("\n"); for(i=0; i<n; i++){ for(j=0; j<n; j++){ printf("%6d", v[i][j]); } printf("\n"); } output(); return 0; }
* Âü°í, ¼øÈ¯¾Ë°í¸®Áò & BT¾Ë°í¸®ÁòÀ¸·Î ÇØ°áÇÏ´Â Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ¹®Á¦µé ÀÔ´Ï´Ù.
¾ðÁ¦°¡´Â ²À ÇØ°áÇØ º¸±â!!
Á¦16ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 1¹ø Ã̼ö°è»ê(BT)
Á¦16ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 3¹ø °°Àº ±æÀÌ ¸·´ë±â ¸¸µé±â(BT)
Á¦17ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 1¹ø Àå³­°¨ Á¶¸³(BT)
Á¦18ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 1¹ø »öÁ¾ÀÌ ¸¸µé±â(BT)
Á¦22ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 2¹ø À¯ÀüÀÚ(BT + ´ÙÀ̳ª¹Í)
Á¦25ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 1¹ø ¿ùµåÄÅ(BT)
Á¦27ȸ Çѱ¹Á¤º¸¿Ã¸²ÇǾƵå Àü±¹º»¼± ÁßµîºÎ 1¹ø ¿ë¾×(BT)
µîµî