1
1h
搞了好久也没弄出啥,也看了一会群里的电子文档Head First java
2
3h
看大话数据结构(257-273)和啊哈算法(148-160)
主要针对最短路径的Floyd-Warshall算法和Dijkstra算法的理解和代码实现;了解了拓扑排序,目前还没敲代码;
3
3.5h
写题组
B题少考虑一个点,耗时比较长
D题时间超限用另一种算法
A题自我感觉代码正确,可是运行不出来,现在也没想到
#include<stdio.h>
int e[1002][1002],c[1002]={0},a[1002]={0};
int f=999999999;
int main()
{
int n,m,C;
while(~scanf("%d%d",&n,&m,&C))
{
int k,i,j,C,t1,t2,t3,x,y;
for(i=1; i<=1000; i++)
for(j=1; j<=1000; j++)
{
if(i==j)
e[i][j]=0;
else
e[i][j]=f;
}
for(i=1; i<=n; i++)
{
scanf("%d%d%d",&t1,&t2,&t3);
if(e[t1][t2]>t3)
e[t1][t2]=e[t2][t1]=t3;
}
for(k=1; k<=1000; k++)
{
for(i=1; i<=1000; i++)
{
if(e[i][k]<f)
{
for(j=1; j<=1000; j++)
if(e[k][j]<f&&e[i][j]>e[i][k]+e[k][j])
e[i][j]=e[i][k]+e[k][j];
}
}
}
for(i=0; i<m; i++)
scanf("%d",&a[i]);
for(i=0; i<C; i++)
scanf("%d",&c[i]);
int min=f;
for(i=0; i<m; i++)
{
for(j=0; j<C; j++)
{
if(e[a[i]][c[j]]<min)
min=e[a[i]][c[j]];
}
}
printf("%d\n",min);
}
return 0;
}
4
1h
看视频和博客